2013-12-07 37 views
0

使用Kendo UI的MVVM框架,我很困惑如何在javascript中绑定的绑定实际上工作。鉴于视图模型,我尝试了以下;KendoUI:混淆绑定实际上'火'

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" }); 

这不会导致函数触发。虽然如果我实际上改变了视图中的项目,例如与它进行交互,它会导致该函数触发。这对我来说没有多大意义。

回答

2

您绑定了viewModel.Items的更改事件,因此您需要在那里触发事件。如果您将电话更改为

viewModel.Items.trigger("change"); 

它会调用viewModel.onUpdateItems()

更改事件会向上冒泡(例如,从内部ObservableArray到外部ViewModel),但不会以其他方式。因此,如果触发视图模型的更改事件,它将不会触发嵌套的ObservableArray Items的事件。

+0

谢谢,这有很大的帮助。剑道的技术支持告诉我只是把所有东西都绑定到顶级视图模型.....我认为这是迟缓的。 – Ciel