KnockoutJS s'abonner à des modifications de la propriété avec la Cartographie Plugin

Est-il de toute façon je peux dire le knock-out plugin de cartographie de s'abonner à toutes les modifications de propriété appeler une fonction?

Je me rends compte que je peux manuellement vous abonner à la propriété de modifier l'événement de cette manière:

var viewModel = {
    name: ko.observable('foo'),
}

//subscribe manually here
viewModel.name.subscribe(function(newValue){
   //do work
})

Je voudrais être en mesure de génériquement abonnez-vous si, depuis mon point de vue, les modèles peuvent varier, je ne veux pas coder en dur les noms de propriété. J'ai créé une fonction qui fait cela, mais il peut ne pas être la meilleure approche. Il fonctionne sur tous les navigateurs, sauf internet explorer 7 et ci-dessous.

Ici, je prends un dernier comme d'un argument et d'essayer de réfléchir à cela s'abonner à la propriétés:

function subscribeToKO(data) {

        $.each(data, function (property, value) {
            if (getType(value) == "Object")
                data[property] = subscribeToKO(value);
            else if (getType(value) == "Array") {
                $.each(value, function (index, item) {
                    item = subscribeToKO(item);
                });
            }
            else {
                if (value.subscribe) {
                    value.subscribe(function (newValue) {
                        //do work                                         
                    });
                }
            }
        });
        return data;
    }

Comme je l'ai dit, cela fonctionne, mais depuis que je suis à l'aide de la cartographie pluging j'espérais qu'il y a un crochet je pourrais utiliser pour fournir une fonction qui va génériquement abonnez-vous à des changements de propriété.

Quelque chose comme:

mapping = {
   create: function(options){
       options.data.subscribe(function(newValue){
            //do work ???
       });
   }
}

ko.mapping.fromJS(viewModel, mapping);

Des idées?

InformationsquelleAutor Gabe | 2012-04-13