2013-12-07 34 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