Невозможно внедрить нативные угловые сервисы в специального провайдера
Я пытаюсь создать провайдера для обработки аутентификации в моем приложении.
function Authenticator($http) {
console.log($http);
return {
test: function() {}
}
}
app.provider('authenticator', function AuthenticatorProvider() {
this.config = function () {
var requestParams;
return {
setRequestParams: function (params) {
requestParams = params;
}
}
}();
this.$get = function($http) {
return new Authenticator($http);
};
});
Когда я запускаю код выше, $http устанавливается как неопределенное. Что я делаю неправильно? Как правильно ввести сервис $http в пользовательский провайдер?
Спасибо
1 ответ
Я предполагаю, что вы действительно хотите делать что-то вроде этого:
app.factory('AuthenticationService', ['$http', function($http) {
var AuthenticationService = function() {};
AuthenticationService.prototype.config = function)() { ... }
return new AuthenticationService();
}]);
Это создает сервис, который может быть внедрен в другие контроллеры, директивы и сервисы, для которых всегда будет только один общий экземпляр. Выборка службы по ее строке означает, что ссылка внутри функции является локальной для замыкания, что означает, что переменная может быть безопасно переименована, что экономит драгоценную пропускную способность.