使用Kendo UI的MVVM框架,我对如何在javascript中连接的绑定实际工作感到困惑。鉴于视图模型,我尝试了以下内容;
var viewModel = new kendo.observable({
Items: [],
onUpdateItems: function(e){
console.log('updating items');
}
});
viewModel.Items.bind('change', function(e){
viewModel.onUpdateItems(e);
});
viewModel.trigger("change", { field: "Items" });
这不会导致该功能触发。虽然如果我实际上更改了视图中的项目,比如与它进行交互,它会导致函数触发。这对我来说并没有多大意义。
答案 0 :(得分:2)
您正在绑定viewModel.Items的更改事件,因此您需要在那里触发事件。如果您将通话更改为
viewModel.Items.trigger("change");
它会调用viewModel.onUpdateItems()
。
更改事件将向上冒泡(例如,从内部ObservableArray到外部ViewModel),但不是另一种方式。因此,如果您触发视图模型的更改事件,则不会为嵌套的ObservableArray Items
触发事件。