Knockout.js Faire de chaque objet imbriqué Observable

Je suis en utilisant Knockout.js comme MVVM bibliothèque de lier mes données à certaines pages. Je suis actuellement à la construction d'une bibliothèque pour faire des appels de REPOS à un service web.
Mon service web RESTful renvoie une structure simple:

{
    id : 1,
    details: {
        name: "Johnny",
        surname: "Boy"
    }
}

J'ai une observable parent principal, myObject.
Quand je fais

myObject(ko.mapping.fromJS(data))

les phénomènes observables dans les myObject sont:

  • id
  • name
  • surname

Comment puis-je faire details (et théoriquement n'importe quel objet dans la structure observable)? J'ai besoin de ce comportement, de sorte que je peux mettre calculée observables sur les détails et de se faire remarquer dès le interne à des modifications de données.

J'ai mis en place une base de fonction récursive qui devrait faire l'affaire. Ce n'est pas, bien sûr, myObject.details ne deviennent pas un observable.

//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]);
    }
};

Je suis sûr que c'est quelque chose à propos des références incorrectes, mais comment puis-je résoudre ce problème? Merci.

  • Pas une réponse directe, mais peut.Observer dans CanJS construit un imbriquée observables exactement comme vous le décrivez.
InformationsquelleAutor frapontillo | 2012-05-11