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は子配列を繰り返します。