У меня есть следующая модель нокаута:
var myViewModel = {
courseData: ko.observable(null);
};
Затем я получаю от сервера следующие данные:
var data = {
"courses": [
{
"srcCourses": [ { "code": "001", "name": "Course 1"}, { "code": "002", "name": "Course 2"} ],
"destCourse": { "code": "003", "name": "Course 3"}
},
{
"srcCourse": [ { "code": "004", "name": "Course 4"}, { "code": "005", "name": "Course 5"} ],
"destCourse": { "code": "006", "name": "Course 6"}
}
]
}
Я запускаю через плагин Knockout mapping в мою модель представления следующим образом:
this.courseData(ko.mapping.fromJS(data));
Это, по сути, оставляет меня со следующей иерархией объектов модели представления:
{
KnockoutObservable(this.courseData): {
KnockoutObservableArray(Courses): [
{
KnockoutObservableArray(srcCourses): [ ... ],
destCourse: { KnockoutObservable(code), KnockoutObservable(name) }
},
{
...
}
]
}
}
Проблема заключается в том, что объект destCourse остается объектом и не преобразуется в наблюдаемый (хотя каждое свойство в объекте destCourse преобразуется в наблюдаемый).
Как я могу сделать так, чтобы все дочерние объекты тоже конвертировали данные в наблюдаемые? В идеале самым общим из возможных способов?