Knockout.jsをMVVMライブラリとして使用して、データをいくつかのページにバインドしています。現在、WebサービスへのREST呼び出しを行うためのライブラリを構築しています。私のRESTfulWebサービスは、単純な構造を返します。
{
id : 1,
details: {
name: "Johnny",
surname: "Boy"
}
}
私には観察可能な主な親がいmyObject
ます。私がする時
myObject(ko.mapping.fromJS(data))
のオブザーバブルは次のmyObject
とおりです。
id
name
surname
どうすればdetails
(そして理論的には構造内の任意のオブジェクトを観察可能にすることができますか)?この動作が必要なのは、詳細に計算されたオブザーバブルを設定し、内部データのいずれかが変更されるとすぐに通知されるようにするためです。
トリックを実行する基本的な再帰関数を設定しました。もちろん、それは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]);
}
};
間違った参照に関するものだと確信していますが、どうすればこれを解決できますか?ありがとうございました。