Sto usando classe ES6 per definire il mio controller quindi questa è la sintassi,dipendenza iniezioni non sono definite in funzioni di regolazione durante l'utilizzo di Angular1 + ES6, con il regolatore come classe
export class SearchBarController {
constructor($log) {
'ngInject';
$log.debug("Hello");
}
textTyped($log){
$log.debug("change fired.");
}
}
vista:
<input type="text" data-ng-model="vm.txt" data-ng-change="vm.textTyped()"/>
Quindi "Hello" dall'interno del costruttore viene registrato correttamente. Ma, "change fired" all'interno della funzione typedText() non viene attivato perché apparentemente non è definito come faccio a rendere la funzione di classe textTyped() per accedere al servizio $ log?
Nota: Se assegno $ accedo ad una proprietà di classe nel costruttore come,
this.logger = $log;
E poi fare,
this.logger.debug("Change fired.");
questo funziona. Ma non sono sicuro se sia l'approccio giusto.
Aggiornamento: Inoltre, questo approccio espone questo riferimento al servizio $ log alla vista associata a questo controller. È dannoso?
C'è una soluzione migliore?
'this.logger = $ log' è [l'approccio consigliato] (http://blog.thoughtram.io/angularjs/es6/2015/01/23/exploring-angular-1.3-using-es6.html) . –
ok grazie. Ma non lo aggiungerebbe a "this" esporlo direttamente a viewModel/$ scope? – jackOfAll