У меня есть модель представления, наблюдаемая нокаутом, как я определил ниже
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, как показано ниже. 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.Данные помещаются в массив, но таблица не может понять изменения.Чтобы уведомить представление, я вызываю vm.notify метод для принудительного обновления пользовательского интерфейса.
Во-первых: нужно ли вызывать valueHasMutated метод для обновления пользовательского интерфейса?
Во-вторых: у меня есть некоторые другие элементы, которые связаны с viewModel, такие как select2, dataTables и т. Д. Послевызов метода valueHasMutated , событие изменения компонента select2 запускается автоматически.
В чем причины?