Когда пользовательский интерфейс обновлений дочернего массива не обновляется sh в нокауте js - PullRequest
0 голосов
/ 11 марта 2020

Я работаю над нокаутом js. У меня есть наблюдаемый объект массива, такой как

viewModel () {

self.myObservableArray = ko.observableArray();


}

После некоторого вызова asy c api я обновлю массив следующим образом

self.myObservableArray().push({
    "name" : "Some name",
    "childArray" : []
});

После второго ayn c вызова API мне потребуется l oop через ответ и pu sh элемент в childArray в каждом l oop.

self.myObservableArray()[0]. childArray.push({
        "childName" : "name " + $index
    })

Но пользовательский интерфейс не обновляет sh, так как я обновлял массив второго уровня. Как правильно добавить элементы, чтобы пользовательский интерфейс обновлялся или, по крайней мере, есть способ вызвать событие, которое говорит, что родительское свойство изменено.

1 Ответ

0 голосов
/ 12 марта 2020

Если вы хотите, чтобы пользовательский интерфейс обновлялся при изменении childArray, то он также должен быть observableArray. Я также предполагаю, что вам также нужно сделать name наблюдаемым, поэтому может быть хорошей идеей просто поместить t ie их обоих в отдельную модель представления, например:

var childViewModel = function (name, items) {
   var self = this;
   self.name = ko.observable(name);
   self.childArray = ko.observableArray(items);
}

self.myObservableArray.push(new childViewMode("Some name", []));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...