[英]Why the $get method isn't being called?
我试图用角度编写提供程序,但我不知道为什么不调用$ get方法。
我知道它是什么,但是我不知道什么时候被angular调用,是在注入提供程序时吗? 我需要从那里返回什么? 谁能举一个简单的例子来证明这一点?
我尝试了AngularJS 示例,但是对于我一生来说,我得到的结果是相同的。
var RoutingProvider = (function () {
function RoutingProvider() {
this.$get = function ($injector) {
console.log("do something");
return new RoutingProvider();
};
this.$get.$inject = ['$injector'];
}
RoutingProvider.prototype.register = function (routes) {
console.log(routes);
};
return RoutingProvider;
})();
编辑:
这是角度文档提供的示例。
function UnicornLauncher(apiToken, useTinfoilShielding) {
this.launchedCount = 0;
this.launch = function() {
this.launchedCount++;
}
}
bootstrap.provider('unicornLauncher', function UnicornLauncherProvider() {
var useTinfoilShielding = false;
this.useTinfoilShielding = function(value) {
useTinfoilShielding = !!value;
};
this.$get = ["apiToken", function unicornLauncherFactory(apiToken) {
console.log("foo");
// let's assume that the UnicornLauncher constructor was also changed to
// accept and use the useTinfoilShielding argument
return new UnicornLauncher(apiToken, useTinfoilShielding);
}];
});
bootstrap.config(["unicornLauncherProvider", function(unicornLauncherProvider) {
unicornLauncherProvider.useTinfoilShielding(true);
}]);
这是我做的小品 ,证明了这一点。
同样,我看不到来自$ get函数的打印消息。
Foxandxss通过irc从Angular频道获得了答案,这就是他的意思。
这里有两个不同的注入位置服务,控制器,指令,运行哦和过滤器,您可以注入服务,但没有提供者,那么,您还有另一个注入位置,提供者和配置函数,您只能注入常量和提供者,所以提供者有两个如果将提供程序注入另一个提供程序或配置中,则将“提供程序部分,即配置”和其中的“工厂”分为$ get,则将配置部分注入,并且必须在名称后附加提供程序注入“ unicornLauncher”到配置中,你应该放“ unicornLauncherProvider”,它将注入配置部分,而不是$ get,如果你去控制器,注入unicornLauncher它将注入里面的工厂(也就是$ get),你不会能够访问其中的“ usetinfoilshielding”,因为它是提供程序的一部分,而不是内部的工厂($ get),因此,基本上,提供程序是两个部分,您可以使用一个或另一个,而不能同时使用
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.