Есть ли способ сопоставить объект данных JSON с наблюдаемым массивом, а затем поочередно инициализировать каждый элемент наблюдаемого массива в модель представления определенного типа?
Я посмотрел вседокументации по нокауту, а также примеров нокаута и сопоставления здесь, и я не могу найти ответ, который подходит для того, что мне нужно.
Итак, у меня есть следующие данные JSON:
var data = {
state : {
name : 'SD',
cities : [{
name : 'Sioux Falls',
streets : [{
number : 1
}, {
number : 3
}]
}, {
name : 'Rapid City',
streets : [{
number : 2
}, {
number : 4
}]
}]
}
};
И у меня есть следующие модели представлений:
var StateViewModel = function(){
this.name = ko.observable();
this.cities = ko.observableArray([new CityViewModel()]);
}
var CityViewModel = function(){
this.name = ko.observable();
this.streets = ko.observableArray([new StreetViewModel()]);
}
var StreetViewModel = function(){
this.number = ko.observable();
}
Возможно ли при заданной структуре данных и с помощью подключаемого модуля отображения нокаута результирующий StateViewModel содержать observableArray, заполненный 2 объектами CityViewModel и каждым объектом CityViewModelсодержащий observableArray, заполненный 2 StreetViewModels?
В настоящее время с помощью подключаемого модуля сопоставления я могу отобразить его на StateViewModel, но коллекции городов и улиц заполняются общими объектами, а не экземплярами.моих моделей с видом на город и улицу.
Они заканчивают соНаправьте наблюдаемые свойства и значения на них, они просто не являются экземплярами моих моделей представлений, и это то, что мне нужно.