Я использую Knockout.js в качестве библиотеки MVVM для привязки моих данных к некоторым страницам. В настоящее время я создаю библиотеку для вызовов REST в веб-службу. Мой веб-сервис RESTful возвращает простую структуру:
{
id : 1,
details: {
name: "Johnny",
surname: "Boy"
}
}
У меня есть наблюдаемый главный родитель, myObject
.
Когда я делаю
myObject(ko.mapping.fromJS(data))
, наблюдаемые в myObject
следующие:
id
имя
фамилия
Как я могу сделать детали
(и теоретически любой объект в структура наблюдаемая)? Мне нужно такое поведение, чтобы я мог установить вычисляемое наблюдаемое для деталей и быть замеченным, как только какие-либо внутренние данные изменятся.
Я создал базовую рекурсивную функцию, которая должна помочь. Конечно, myObject.details
не становится наблюдаемым.
// Makes every object in the tree an observable.
var makeAllObservables = function () {
makeChildrenObservables(myObject);
};
var makeChildrenObservables = function (object) {
// Make the parent an observable if it's not already
if (!ko.isObservable(object)) {
if ($.isArray(object))
object = ko.observableArray(object);
else
object = ko.observable(object);
}
// Loop through its children
for (var child in object()) {
makeChildrenObservables(object()[child]);
}
};
Я почти уверен, что дело в неверных ссылках, но как решить эту проблему? Спасибо.