W Angular 1.3 możliwe jest użycie this.foo='bar'
insteaod z $scope.foo='bar'
. Teraz, jak mogę użyć $watch
bez $ scope?
13
A
Odpowiedz
17
Istnieje kilka opcji, aby uniknąć konieczności używania $watch
podczas korzystania ze składni controller as
.
Następujące przykłady pochodzą z blog post I wrote about avoiding $scope
.
Korzystanie ng-change
Jeśli masz zegarek skonfigurować do nasłuchiwania zmian rzeczowych że pochodzi od pola formularza, a następnie NG-zmiana jest najlepszym.
<input type="text" ng-model="ctrl.name" ng-change="ctrl.search(ctrl.name)" />
MyCtrl.prototype.search = function(name){
//call some service here
};
Korzystanie Właściwości ES5
Jeśli masz jakąś właściwość, że nie jest związany z pola wejściowego, lub jest będzie aktualizowany z kodu, to może wydawać się zegarek to Twój jedyny wybór . Jeśli jednak nie musisz obsługiwać IE8 lub niższego poziomu, możesz użyć właściwości ES5, aby uruchomić funkcję, gdy coś zmieni się na kontrolerze.
var MyCtrl = function(){
this._selectedItem = null;
};
Object.defineProperty(MyCtrl.prototype,
"selectedItem", {
get: function() {
return this._selectedItem;
},
set: function (newValue) {
this._selectedItem = newValue;
//Call method on update
this.onSelectedItemChange(this._selectedItem);
},
enumerable: true,
configurable: true
});
Powiązane problemy
- 1. Angular $ routeProvider i kontroler jako składnia
- 2. Użyj `this. $ Watch` zamiast` $ scope. $ Watch` z 'Controller As'
- 3. AngularJS, $ http.get() i "kontroler jako"
- 4. Stan. Używanie celu + = składnia
- 5. Jak pracować z $ scope i $ watch przy użyciu składni generatora z pełnymi kątami?
- 6. Jak odłączyć zewnętrzne wydarzenie, gdy kontroler/$ scope zostanie zniszczony?
- 7. Dlaczego $ httpbackend.flush powoduje, że mój $ scope. $ Watch uruchamia się w nieskończoność?
- 8. Angularjs "Controller as" lub "$ scope"
- 9. Dziwne zachowanie zegarka Angulara $ watch
- 10. wyjście Symfony2 dowolny kontroler HTML jako JSON
- 11. używanie zmiennych out of scope w C++ 11 wyrażeń lambda
- 12. AngularJS $ scope. $ Watch na obiekcie json nie działa zgodnie z dyrektywą
- 13. Używanie Notepad ++ jako edytora Git bez wpływu na ustawienia
- 14. Używanie mocno wpisanej metody jako argumentu bez określania parametrów
- 15. Kontroler Run Pylons jako osobna aplikacja?
- 16. Wyzwalanie ngModelController $ parsery pipeline od a $ watch
- 17. podnieść alarm w kontroler szyny bez przekierować
- 18. CakePHP - kontroler bez widoku i modelu
- 19. AngularJS: Basic $ watch not working
- 20. Kompaktowa składnia dla nagłówka listy jako opcja
- 21. Używanie socket.io jako api
- 22. $ watch jest uruchamiany bezpośrednio po init, dlaczego?
- 23. Angular JS $ watch vs $ on
- 24. Składnia INSERTing do tabeli bez wartości?
- 25. Reveal.js Składnia kodu HTML higlighting bez renderowania
- 26. vim domyślna składnia dla plików bez rozszerzenia
- 27. Znak zapytania składnia z coffeescript bez coffeescript
- 28. Składnia LESS bez CSS użyteczne dla modernizatora
- 29. angularjs - kontroler testujący
- 30. Używanie Guice bez głównej metody
Krótka odpowiedź wydaje się, że nie, ponieważ $ zegarek jest metodą zakres $, ale opracowanie: Co to use-case, jaki jest zakres zmiennej chcesz obserwować? – doldt
W zależności od tego, co próbujesz zrobić, możesz użyć opcji [ng-change] (https://docs.angularjs.org/api/ng/directive/ngChange), jeśli musisz tylko zaobserwować zmianę w polu wprowadzania danych –
Rzeczywiście Muszę obejrzeć każdą zmianę w dowolnym polu modelu. – PHPst