我有一个像我在下面定义的淘汰赛中观察到的视图模型
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组件'更改事件会自动触发。
原因是什么?