【发布时间】:2012-07-31 17:44:48
【问题描述】:
当父 observable 使用 KnockoutJs 发生变化时,如何触发对子元素的更新?
在我的应用程序中,我正在构建一个翻译工具。我有一个代表某些文本的原始(默认)值的淘汰赛类,并带有一组翻译的孩子:
function ParentObject(id, defaultValue) {
var self = this;
self.id = id;
self.defaultValue = ko.observable(defaultValue);
self.children = ko.observableArray();
self.loadChildren = function () {
// standard code to load the children ("lazy load", as I have gobs of data)
}
}
孩子是
function Child(id, translation, cultureCode) {
var self = this;
self.id = id;
self.cultureCode = cultureCode;
self.translation= ko.observable(translation);
}
父项的 defaultValue 属性绑定到输入控件。
当我更新父级的默认值时,我想做的是为每个子级调用我的翻译服务。但是我对如何进行有点迷茫。
- 如何识别父级的“defaultValue”属性具有 改变了吗?
- 我是否应该迭代父级中的子级 发生了,还是以某种方式也将其转移给了孩子?
(注意,我的例子是从实际实现中简化的)
编辑:将此与函数一起添加到我的 defaultValue 元素中,仍然传递旧值:
data-bind=" value: defaultValue, event: {change: updateChildren}"
updateChildren 迭代子数组的位置。
【问题讨论】:
标签: javascript mvvm knockout.js