У меня проблемы с доступом к встроенным службам Angular, таким как $http, при создании службы с ES6.
Например, я создаю службу «ResultsFinder», которая будет выполнять вызов AJAX, а затем выполнять некоторые действия. Проблема в том, что у меня есть доступ к $http только в конструкторе (если я передаю его в качестве аргумента), но не в других методах (таких как getResults).
См. этот пример кода:
(() => {
'use strict';
class ResultsFinder {
constructor($http) {}
getResults() {
return 'ResultsFinder';
}
}
/**
* @ngdoc service
* @name itemManager.service:ResultsFinder
*
* @description
*
*/
angular
.module('itemManager')
.service('ResultsFinder', ResultsFinder);
}());
Внутри getResults у меня нет доступа к $http. Чтобы получить доступ, я должен сделать что-то, что мне кажется неправильным, например:
(() => {
'use strict';
class ResultsFinder {
constructor($http) {
this.$http = $http;
}
getResults() {
// Here I have access to this.$http
return 'ResultsFinder';
}
}
/**
* @ngdoc service
* @name itemManager.service:ResultsFinder
*
* @description
*
*/
angular
.module('itemManager')
.service('ResultsFinder', ResultsFinder);
}());
Кто-нибудь может дать мне несколько советов о правильном способе справиться с этим?
window
.window.$http.get("/")
будет недействительным. С помощью TypeScript вы сможете аннотировать элемент какprivate
. - person Martin   schedule 15.04.2015