knockout.js - knockout : refresh bindings after populating select list

标签 knockout.js

我觉得这个问题以前肯定有人问过,但我看过

但这些问题并不完全是我面临的问题。

在我看来,我从 ajax 调用中收到了一个 View 模型。该对象中有一个国家/地区 ID。在后续的 ajax 调用中,我检索国家/地区列表(名称和 ID)并从列表中填充选择框。

选择框使用绑定(bind)到 View 模型的国家/地区 ID

<select data-bind="value: CountryId"/>

但是当我填充下拉列表时,未预先选择 View 模型的国家/地区。我必须手动调用 ko.applyBindings(vm),这是一个问题,因为数据是从处理级联选择框的 jQuery 插件填充的。它没有对 View 模型的引用(我也不想提供它)。我可以公开回调,但这有点麻烦。

我创建了a fiddle这更清楚地说明了这个问题。如果单击“测试选择”按钮,您会注意到下拉列表已预选为“项目 0”。取消注释 js 面板中的行,Bob 就是您的叔叔。

我在这里没有得到什么?这不是基本的 knockout 功能吗?

-朱尔斯

最佳答案

正如 John Earles 所说,将项目添加到选择列表不会触发“更改”事件。我得出的结论是,这实际上是一件好事。来自(非常好的) knockout 类(class)之一:

Bindings catch DOM events and correspondingly update viewmodel properties.

这与我想要的行为相反!所以我坚持使用回调。目前它只是调用 applyBindings()。您可以在 this revision 中查看示例。原始 fiddle 的(为了清楚起见,省略了回调等)。

关于knockout.js - knockout : refresh bindings after populating select list,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9832241/

相关文章:

javascript - knockout 中的 session 值(value)

javascript - 如何将 knockout 的 Observable 数组长度绑定(bind)到 html 元素

javascript - Knockout.js - 组件之间的 Pub/Sub,双向对话

asp.net-mvc - ASP.NET MVC 5、Knockout.js 和映射 : the right way?

javascript - 我得到一个 JSON/Javascript 对象,因为我可以在控制台中看到它,但如何让它序列化并使我的数据绑定(bind)到我的 Ui 元素?

knockout.js - 使用 Knockout Validator 添加 CSS 类

javascript - 打开 firebug 控制台的 Firefox 使用 sammy.js 和 knockout.js 引发过多递归

javascript - 如何在 knockout.js 中递归使用模板

javascript - KnockoutJS,映射插件,模型更改时收到通知吗?

javascript - 在整个对象级别而不是单个属性上运行验证