Перемещение наблюдаемого нокаута в массив наблюдаемого нокаута

Поскольку наблюдаемые массивы нокаута обновляются только при изменении элемента в массиве, если этот элемент сам является наблюдаемым, я пытаюсь «втолкнуть» элемент в наблюдаемый массив, но сделать его наблюдаемым. Я пробовал следующие операторы, но оба приводят к неопределенным значениям в моем наблюдаемом массиве:

viewModel.myObservableArray.push(ko.observable());

а также

viewModel.myObservableArray.push(new ko.observable());

каков был бы правильный путь к этому?


person Bradley Trager    schedule 17.04.2013    source источник
comment
это неправда. Наблюдаемый массив обновляется, когда элементы в наблюдаемом массиве добавляются или удаляются (сами элементы не обязательно должны быть наблюдаемыми). если вы хотите отправить наблюдаемое, вам нужно сделать viewModel.myOBservableArray.push(ko.observable('некоторое значение')) если это строка или viewModel.MyObservableArray.push(ko.observable({id: 1, name: 'что-то'}))   -  person Sujesh Arukil    schedule 17.04.2013


Ответы (2)


Сделайте то, что вы пытаетесь поместить в модель, таким объектом

function MyObject(initValuye){
var self = this;
    var value = ko.observable(initValuye);
}

В вашей модели

viewModel.myObservableArray.push(new MyObject(someValue));
person segFault    schedule 18.04.2013
comment
Спасибо, это работает, но я пытался сделать это без создания объекта. - person Bradley Trager; 18.04.2013

Вы можете попробовать и так

viewModel.myObservableArray.push(ko.observable("Test"));

viewModel.myObservableArray.push(new ko.observable("Test"));
person sivanv    schedule 18.04.2013