Sto tentando di utilizzare una classe ES6 come servizio angolare ma quando viene creata un'istanza, i metodi non hanno accesso alle variabili del costruttore.Servizio angolare con classe ES6 e Babel
class dataWrapperService {
constructor($q, $log) {
this.$q = $q;
this.$log = $log;
}
data() {
console.log(this.$q);
}
}
dataWrapperService.$inject = ['$q', '$log'];
app.service('dataWrapper', dataWrapperService);
volta che il servizio viene iniettato da angolare e chiamo il metodo dati su di esso, il metodo non riesce ad avere accesso ai valori del costruttore.
// calling the data method results in an error
dataWrapper.data(); //TypeError: Cannot read property '$q' of undefined
// console.log output of dataWrapper:
Object
$log: Object
$q: Q(resolver)
__proto__: smDataWrapperService
constructor: smDataWrapperService($q, $log)
data: data()
__proto__: Object
MA ...
posso nuova il dataWrapperService manualmente e che funziona bene.
var dataWrapper = new smDataWrapperService("hello", "sir");
dataWrapper.data(); // "hello"
Cosa mi manca qui?
UPDATE:
Ciò sembra accadere solo in callback promessa:
solito passare le funzioni di poi/catch come questo:
$http.get('whatever').then(dataWrapper.data);
Ma solo quanto segue funzionerà:
$http.get('whatever').then((response) => smDataWrapper.data(response))
ho pensato che angular.service ha una funzione di costruzione e chiamato "nuovo" su di esso? – Failpunk
Sì, mi dispiace, hai ragione. Il mio codice è per una fabbrica. Lo correggerò. Non so cosa c'è di sbagliato nel tuo codice. Ho visto molti esempi come nel tuo codice. – AWolf
Sembra che questo accada solo con promesse. Aggiornato gli esempi sopra. – Failpunk