KendoUI: запутался в том, когда привязки действительно «срабатывают»

Используя инфраструктуру MVVM Kendo UI, я запутался в том, как на самом деле работают привязки, подключенные к 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" });

Это не приводит к срабатыванию функции. Хотя, если я действительно изменяю элементы в представлении, например, взаимодействую с ним, это вызывает срабатывание функции. Это не имеет большого смысла для меня.


person Ciel    schedule 07.12.2013    source источник


Ответы (1)


Вы привязываете событие изменения для viewModel.Items, поэтому вам нужно инициировать событие там. Если вы измените свой вызов на

viewModel.Items.trigger("change");

он вызовет viewModel.onUpdateItems().

События изменения будут подниматься вверх (например, от внутреннего ObservableArray к внешней ViewModel), но не наоборот. Поэтому, если вы инициируете событие изменения для модели представления, оно не вызовет событие для вложенного массива ObservableArray Items.

person Lars Höppner    schedule 07.12.2013
comment
Спасибо, это очень помогло. Техническая поддержка Кендо сказала мне просто привязать все к модели представления верхнего уровня ..... что, я думаю, отстало. - person Ciel; 09.12.2013