2016-12-16 6 views
0

einen Beobachter wieWie kann ich ein js (es6) Set sehen?

scope.$watchCollection('vm.mySet', a => console.log(a))

oder

scope.$watch('vm.mySet', a => console.log(a))

scheint nichts zu tun einstellen. Ist das erwartetes Verhalten?

Antwort

1

AngularJS hatte immer einen Scope. $ Watch() Funktion als Mittel, um Änderungen eines gegebenen Wertes zu beobachten [und darauf zu reagieren]. Mit AngularJS 1.1.4 wurde jedoch die Funktion Scope. $ WatchCollection() hinzugefügt, um Änderungen in einer Sammlung (entweder als Array oder als Objekt) zu beobachten.

Hier verwenden Sie controllerAs Syntax. Verwenden Sie also den Wert, den Sie überwachen möchten, an this. Dies ist wie folgt:

$scope.$watch (angular.bind(this,() => this.mySet), (value) => console.log(value)); 

Wenn es nicht controllerAs Syntax ist, können Sie sich direkt wie folgt verwendet werden:

$scope.$watch ('mySet', (value) => console.log(value)); 

Die $watch Werke für mich Änderungen von es6 Set zu beobachten.

+0

Wie ja @Sai, ich denke du hast es re: 'ControllerAs', etwas, das ich völlig übersehen habe. Ich werde damit herumspielen und Ihnen die Antwort geben, wenn es funktioniert. – jmazin