使用jquery更新字段不会更新observable

我想向stackoverflow社区问好。

我几天前刚刚开始使用淘汰赛。

正确知道我正在使用它为我正在开发的CMS制作动态菜单构建器。

这是代码: http : //jsfiddle.net/dnlgmzddr/HcRqn/

问题是,当我从选择框中选择一个元素时,输入字段会按照我的预期更新,但是observable不会反映更改。 因此,未启用添加按钮。

我错过了什么? 我该如何解决?

谢谢。

填充url字段时,您需要触发change事件以使itservable得以升级。 所以,你可以这样做:

$("#url").val('/pages/' + id).change(); 

另一个选择是Knockout精神中的更多选择是在你的选择上使用绑定。 在这种情况下,您可能希望使用该值填充observable,然后使用手动订阅将格式化的值默认为输入字段。

 this.itemUrl = ko.observable(); this.selectedUrl = ko.observable(); this.selectedUrl.subscribe(function(newValue) { if (newValue) { this.itemUrl("/pages/" + newValue); } }, this); 

然后,将您的select绑定到selectedUrl

   

以下是一个示例: http : //jsfiddle.net/rniemeyer/HcRqn/21/

如果您的选项的“价值”是url,您还可以消除额外的可观察和手动订阅。

在选择字段时,您无法在代码中看到实际启用按钮的任何位置。 所以我可能会遗漏一些东西,但只需启用更改按钮。 如下:

 function LoadMenu() { $("#pagedList").change(function () { var id = $(this).val(); $("#url").val('/pages/' + id); // remove the disabled attribute here $('button.space').removeAttr('disabled'); }); }