Событие изменения Select2 запускается при вызове метода valueHasMutated нокаута - PullRequest
0 голосов
/ 08 июня 2018

У меня есть модель представления, наблюдаемая нокаутом, как я определил ниже

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 запускается автоматически.

В чем причины?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...