Я использую Knockout.js в качестве библиотеки MVVM для привязки моих данных к некоторым страницам. В настоящее время я создаю библиотеку для вызова REST на веб-службу. Моя веб-служба RESTful возвращает простую структуру:
{
id : 1,
details: {
name: "Johnny",
surname: "Boy"
}
}
У меня есть наблюдаемый основной родитель, myObject
.
Когда я делаю
myObject(ko.mapping.fromJS(data))
наблюдаемые в myObject
:
-
id
-
name
-
surname
Как я могу сделать 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 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]);
}
};
Я уверен, что это что-то о неправильных ссылках, но как я могу это решить? Спасибо.