AngularJS regarder une propriété de l'objet dans un tableau d'objets

J'ai cette data dans mon contrôleur

    $scope.data = {
        home: {
            baseValue: "1",
            name: "home"
        },
        contact: {
            baseValue: "2",
            name: "contract"
        }
     //a lot more options
    };

avec le code html comme ceci:

<section class="content row" ng-repeat="item in data">
   {{item.name}}
   ....
</section>

Maintenant, je veux savoir quand le baseValue est changé, mais en raison de I en utilisant l'un des objets à l'intérieur de la variable de données, je ne peux pas watch la propriété de façon plus simple.

J'ai essayé quelque chose comme ça, mais je boucle le tableau

$scope.$watch('data', function (newValue, oldValue, scope) {
 //some code to compare the tow arrays, line by line
}, true);

Comment puis-je faire un simple $watch savoir que lorsque le baseValue est changé?

Des questions similaires:

Mise à JOUR 1

Je pourrais ajouter une montre, pour chaque objet, à savoir lorsque le baseValue est modifié, mais il ne sera pas bien si j'ai eu un n nombre d'objets, pas seulement quelques objets, comme dans cet exemple

$scope.$watch('data.home', function (newValue, oldValue, scope) {
 //do some stuff with newvalue.baseValue
}, true);

$scope.$watch('data.contact', function (newValue, oldValue, scope) {
 //do some stuff with newvalue.baseValue
}, true);
... //Adds more individual `watch`
  • Vous voulez seulement savoir quand baseValue a changé, mais vous ne voulez pas d'ajouter une personne à surveiller?
  • À propos de la mise à jour 1, pouvez-vous définir "pas gentil" ?
  • comment sur l'utilisation de propriété descripteurs, et de revenir à *Timeout's?
  • Avez-vous besoin de connaître l'ancienne valeur? Ou vous avez juste besoin de regarder pour les changements?
  • Ou $watchGroup ? Une variante de $watch() où il regarde un tableau de watchExpressions. Si une expression dans la collection change le port d'écoute est exécutée.
InformationsquelleAutor Coyolero | 2014-07-22