调用knockout的valueHasMutated方法时会触发Select2更改事件

时间:2018-06-08 07:35:54

标签: jquery ajax knockout.js jquery-select2

我有一个像我在下面定义的淘汰赛中观察到的视图模型

var viewModel = function() {
     var self = this;
     self.selected = ko.observable({
         people : ko.observableArray(),
         message : ko.observable()
     });
     self.notify = function() {
         self.selected.valueHasMuateted();
     }
}
var vm = new viewModel();
ko.applyBindings(vm);

我在一个带有ajax请求的页面中使用此viewModel,如下所示。 PS:project.Get 方法是一个简单的Ajax助手,该方法没有问题。

//other codes

project.Get("/Data/People", function(data) {
    if(data){
        for(var i in data) {
            var row = data[i];
            vm.selected().people.push(row);
        }
        vm.notify();
    }
})

在ajax请求之后,有一个表在html上监听people数组。数据被推送到数组,但表无法理解更改。为了通知视图我正在调用 vm.notify 方法来强制更新UI。

首先:我是否必须调用 valueHasMutated 方法来更新UI?

第二:我有一些其他元素连接到viewModel,如select2,dataTables等。调用 valueHasMutated 方法后,选择2组件'更改事件会自动触发。

原因是什么?

0 个答案:

没有答案