Я пытаюсь использовать класс ES6 как услугу с угловым выражением, но при его создании методы не имеют доступа к переменным-конструкторам.Угловое обслуживание с классом ES6 и 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);
После того, как услуга получает впрыскивается Угловым и я вызываю метод передачи данных по нему, методу не может иметь доступ к значениям конструкторы.
// 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
НО ...
я могу новый dataWrapperService вручную и что работает просто отлично.
var dataWrapper = new smDataWrapperService("hello", "sir");
dataWrapper.data(); // "hello"
Что мне здесь не хватает?
UPDATE:
Это, кажется, происходит только в обещание обратных вызовов:
Я обычно проходят функции затем/уловом как это:
$http.get('whatever').then(dataWrapper.data);
Но только следующие будут работать:
$http.get('whatever').then((response) => smDataWrapper.data(response))
Я думал, что angular.service взял функцию-конструктор и назвал ее «новой»? – Failpunk
Да, извините, вы правы. Мой код для завода. Я исправлю это. Я не знаю, что не так с вашим кодом. Я видел много примеров, которые понравились в вашем коде. – AWolf
Кажется, что это происходит только с обещаниями. Обновлены приведенные выше примеры. – Failpunk