457 Stimmen

Mehrere $scope-Attribute beobachten

Gibt es eine Möglichkeit, Ereignisse für mehrere Objekte zu abonnieren, indem man $watch

z.B.

$scope.$watch('item1, item2', function () { });

12voto

Warum nicht einfach einpacken in eine forEach ?

angular.forEach(['a', 'b', 'c'], function (key) {
  scope.$watch(key, function (v) {
    changed();
  });
});

Das ist ungefähr der gleiche Aufwand wie die Bereitstellung einer Funktion für den kombinierten Wert, ohne sich um die Zusammensetzung der Werte kümmern zu müssen .

11voto

guyk Punkte 113

Eine etwas sicherere Lösung, um Werte zu kombinieren, könnte darin bestehen, Folgendes als Ihre $watch Funktion:

function() { return angular.toJson([item1, item2]) }

oder

$scope.$watch(
  function() {
    return angular.toJson([item1, item2]);
  },
  function() {
    // Stuff to do after either value changes
  });

5voto

Artem Andreev Punkte 19852

Der erste Parameter von $watch kann sein winkliger Ausdruck oder Funktion. Siehe Dokumentation über $scope.$watch . Sie enthält viele nützliche Informationen darüber, wie die $watch-Methode funktioniert: wann watchExpression aufgerufen wird, wie Angular die Ergebnisse vergleicht, usw.

4voto

wacamo Punkte 49

Wie wäre es damit:

scope.$watch(function() { 
   return { 
      a: thing-one, 
      b: thing-two, 
      c: red-fish, 
      d: blue-fish 
   }; 
}, listener...);

4voto

Akash Shinde Punkte 925
$scope.$watch('age + name', function () {
  //called when name or age changed
});

Diese Funktion wird aufgerufen, wenn sich sowohl der Alters- als auch der Namenswert ändern.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X