我想打个招呼到stackoverflow社区。更新字段与jQuery不更新可观察
我刚刚开始使用淘汰赛前几天。
我知道我正在使用它来为我正在处理的CMS制作动态菜单生成器。
下面是代码:http://jsfiddle.net/dnlgmzddr/HcRqn/
的问题是,当我选择从选择框中选择一个元素,输入字段更新如我所料,但可观察到的不反映更改。因此,添加按钮未启用。
我错过了什么?我该如何解决它?
谢谢。
我想打个招呼到stackoverflow社区。更新字段与jQuery不更新可观察
我刚刚开始使用淘汰赛前几天。
我知道我正在使用它来为我正在处理的CMS制作动态菜单生成器。
下面是代码:http://jsfiddle.net/dnlgmzddr/HcRqn/
的问题是,当我选择从选择框中选择一个元素,输入字段更新如我所料,但可观察到的不反映更改。因此,添加按钮未启用。
我错过了什么?我该如何解决它?
谢谢。
当你填入URL字段中,您将需要触发更改事件获取要更新过的可观察的。所以,你可以这样做:
$("#url").val('/pages/' + id).change();
另一个选择,虽然这是在淘汰赛精神更多的是在你的选择使用绑定。在这种情况下,您可能希望使用该值填充observable,然后使用手动订阅将默认格式化值输入到输入字段中。
this.itemUrl = ko.observable();
this.selectedUrl = ko.observable();
this.selectedUrl.subscribe(function(newValue) {
if (newValue) {
this.itemUrl("/pages/" + newValue);
}
}, this);
然后,结合你的选择selectedUrl
:
<select id="pagedList" data-bind="value: selectedUrl">
<option value=""><option>
<option value="test">Test</option>
</select>
这里有一个例子:http://jsfiddle.net/rniemeyer/HcRqn/21/
你也可以消除额外的可观察到的和手动订阅如果你的选择“值”是网址。
我看不到你的代码中的任何地方,当你选择一个字段时,你实际上启用了这个按钮。所以我可能会错过一些东西,但只是启用更改按钮。像下面这样:
function LoadMenu() {
$("#pagedList").change(function() {
var id = $(this).val();
$("#url").val('/pages/' + id);
// remove the disabled attribute here
$('button.space').removeAttr('disabled');
});
}