gpt4 book ai didi

angularjs - 错误 : [$injector:unpr] Unknown provider: $q. 对 DI 语法感到困惑

转载 作者:行者123 更新时间:2023-12-02 23:42:41 25 4
gpt4 key购买 nike

代码片段 1 不起作用。我收到错误:[$injector:unpr] 未知提供者:$q

/* Snippet 1*/
var mApp = angular.module('MyApp',[]);
mApp.provider('authProvider', ['$q', function($q) {
this.$get = function(){

authProvider = {};
authProvider.Title = function(){

var deferred = $q.defer();
deferred.resolve("promise resolved");
return deferred.promise;

}
return authProvider;
}
}]);

但是,Snippet 2 可以工作。我很困惑这是为什么?我读过的所有工厂示例代码,都在第一行注入(inject)依赖项,例如.factory('MyFactory',[$q,function($q) {}]);为什么这种风格在上面的提供者代码中不起作用?另外,为什么我们在 GET 声明下面注入(inject) $q 而不是在 TITLE 声明中注入(inject) $q 。

/* Snippet 2*/
mApp.provider('authProvider', function() {
this.$get = function($q){

authProvider = {};
authProvider.Title = function(){

var deferred = $q.defer();
deferred.resolve("promise resolved");
return deferred.promise;

}
return authProvider;
}
});

请帮忙!!!

(代码现在没有做任何事情。我只是想学习语法)

最佳答案

你不能在 provider 中进行直接 DI,当你使用 provider 时,你必须在 $get 中注入(inject)你的组件。

无法直接将依赖项注入(inject) provider 的原因是 provider 在模块加载阶段运行,而 $get 在模块加载阶段运行实例化您提供的服务。

在模块的加载/配置阶段,您不能使用任何服务。

关于angularjs - 错误 : [$injector:unpr] Unknown provider: $q. 对 DI 语法感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32539911/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com