的「樹」我有一個具有多個可觀測性挖空模型:創建淘汰賽結合處理程序取決於觀測
var personViewModel = {
name: ko.observable('Bob'),
age: ko.observable(123)
};
我想創建一個自定義綁定這使得人稱視角模式。不過,如果更新任何子屬性,即name
或age
,我希望更新此綁定。
使用bindingHandler時,更新方法僅在綁定的observable屬性更新時觸發,而不是綁定的observables上的子屬性更改時觸發。
作爲一種變通方法,我在init
功能附加訂閱子屬性:
ko.bindingHandlers.foo = {
init: function (element, valueAccessor, allBindingsAccessor,
viewModel, bindingContext) {
// setup code goes here ... DOM elements inserted etc....
valueAccessor().age.subscribe(function() {
// Update the UI
});
valueAccessor().name.subscribe(function() {
// Update the UI
});
},
update: function (element, valueAccessor, allBindingsAccessor,
viewModel, bindingContext) {
// Update the UI
}
};
注:這是一個簡單的例子,我有用於訂閱多個子觀測一個通用的方法!
這是解決問題的好方法嗎?還是有一些內置的Knockout功能,我可以在這裏忽略它?
這實際上很聰明... –
真棒 - 這工作(+1),但...它是如何工作的?我明白'toJS'的作用,但不是爲什麼這會導致綁定在任何值更改時更新? – ColinE
好吧,它迭代對象樹並展開可觀察對象,這將解決依賴關係 – Anders