0

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

这不会导致函数触发。虽然如果我真的改变了视图中的项目,比如与之交互,它会导致函数触发。这对我来说没有多大意义。

4

1 回答 1

2

您正在为 viewModel.Items 绑定更改事件,因此您需要在那里触发该事件。如果您将呼叫更改为

viewModel.Items.trigger("change");

它会调用viewModel.onUpdateItems()

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

于 2013-12-07T22:52:34.127 回答