我觉得以前一定要问这个,但我看了
和
但那些问题并不是我面临的问题。
在我看来,我从ajax调用中收到一个viewmodel。该对象是国家ID。在随后的ajax调用中,我检索国家/地区列表(名称和ID)并从列表中填充一个选择框。
使用
将选择框绑定到viewmodel的国家/地区ID<select data-bind="value: CountryId"/>
但是当我填充下拉列表时,视图模型的国家/地区不会被预先选中。我必须手动调用ko.applyBindings(vm),这是一个问题,因为数据是从处理级联选择框的jQuery插件填充的。它没有对viewmodel的引用(我也不想提供它)。我可以暴露一个回调,但这有点打哈欠。
我创建了a fiddle,可以更清晰地说明这个问题。如果单击“测试选择”按钮,您会注意到下拉列表已预先选择为第0项。取消注释js面板中的行,Bob是您的叔叔。
我没有到这里来的?这不是一个基本的淘汰赛功能吗?
-Jules
答案 0 :(得分:2)
正如John Earles所说,将项目添加到选择列表不会触发“更改”事件。我的结论是,这实际上是一件好事。来自其中一个(非常好的)Knockout tutes:
绑定捕获DOM事件并相应地更新viewmodel属性。
这是我想要的反向行为!所以我坚持回调。目前它只调用applyBindings()。您可以在原始小提琴的this revision中看到一个示例(为清晰起见,省略了回调等)。
答案 1 :(得分:0)
你可以这样做,但你需要访问视图模型:
http://jsfiddle.net/jearles/nw4cH/36/
通过调整Select来阻止它进行评估,直到你填充了observableArray(在以后的调用中)。