In Angular 1.3 è possibile utilizzare this.foo='bar'
durante il periodo $scope.foo='bar'
. Ora, come posso usare $watch
senza $ scope?
13
A
risposta
17
Esistono diverse opzioni per evitare di utilizzare $watch
quando si utilizza la sintassi controller as
.
I seguenti esempi sono presi da un blog post I wrote about avoiding $scope
.
Utilizzando ng-change
Se si dispone di un orologio impostato per ascoltare per cambiare proprietà che proviene da un campo di modulo, quindi ng-cambiamento è la soluzione migliore.
<input type="text" ng-model="ctrl.name" ng-change="ctrl.search(ctrl.name)" />
MyCtrl.prototype.search = function(name){
//call some service here
};
Utilizzo di Proprietà ES5
Se si dispone di una certa proprietà che non è associato a un campo di input, o è sta per essere aggiornata dal codice, può sembrare come un l'orologio è la tua unica scelta . Tuttavia, se non si deve supportare IE8 o inferiore, allora lo può sfruttare le proprietà ES5 per attivare la funzionalità quando cambia qualcosa sul controller.
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
});
Problemi correlati
- 1. Utilizzare `this. $ Watch` invece di` $ scope. $ Watch` con 'Controller As'
- 2. Angularjs "controller come" o "$ scope"
- 3. Angularjs - utilizzo del filtro orderby nello scope del controller
- 4. Come attendere il binding nel componente Angular 1.5 (senza $ scope. $ Watch)
- 5. AngularJS utilizzando $ apply senza $ scope
- 6. Perché il controller angolare necessita di "$ scope"
- 7. ng-view creazione di più controller/scope
- 8. Come ottenere Apple Watch UDID senza XCode?
- 9. aggiungi watch su una variabile non scope in angularjs
- 10. In strato SpringMVC Controller, @Scope ("prototipo") vs @Scope ("Singleton")
- 11. Angularjs: $ scope vs scope
- 12. Utilizzo di Session Scope in Spring Beans
- 13. Rails 3.1.3 scope senza ambito
- 14. Come eseguire la funzione $ watch in Test?
- 15. Ambito di scope @ (prototipo) senza creazione di nuovo bean
- 16. Angularjs $ setPristine non funziona con il controller come sintassi
- 17. Aggiornamento di una variabile di servizio in un controller e utilizzo del valore aggiornato in un altro controller - Angular JS
- 18. Come possiamo testare i metodi del controller angolare non-scope?
- 19. Utilizzo dell'opzione node-sass watch con npm run-script
- 20. AngularJS: $ scope. $ Watch non sta aggiornando il valore recuperato da $ resource sulla direttiva personalizzata
- 21. Utilizzo delle variabili scope dell'applicazione in java
- 22. AngularJS: Basic $ watch non funziona
- 23. scope variabile xslt e il suo utilizzo
- 24. Iniezione di $ http e $ scope in funzione all'interno del controller
- 25. destroy scope/child scope on scope destroy
- 26. AngularJS: Clear $ watch
- 27. Come si accede ai metodi $ on, $ emit, $ broadcast con Controller come sintassi?
- 28. Valori $ scope in AngularJS
- 29. Utilizzo di $ scope in risoluzione del router elettronico
- 30. Jersey @ scope scope
La risposta breve sembra essere no, perché $ orologio è un metodo di portata $, ma elaborare: Qual è il caso d'uso, qual è l'ambito della variabile che si desidera osservare? – doldt
A seconda di cosa stai cercando di fare puoi usare [ng-change] (https://docs.angularjs.org/api/ng/directive/ngChange) se hai solo bisogno di osservare una modifica su un campo di input –
Ho bisogno di guardare qualsiasi modifica a qualsiasi deposito di un modello. – PHPst