我正在尝试以角度编写提供程序,但我无法理解为什么没有调用$ get方法。
我知道它是什么但是我不知道何时它被角度调用,是否在注入提供者时?我需要从那里返回什么?任何人都可以做一个演示它的简单例子吗?
我尝试了AngularJS examples但是对于我的生活,我得到了相同的结果。
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);
}]);
以下是我制作的plunk演示文稿。
同样,我看不到来自$ get函数的打印消息。
答案 0 :(得分:0)
我从Foxandxss获得了Angular频道对irc的回答,这就是他所说的。
有两种不同的注射位置服务,控制器, 指令,运行哦,过滤器,你可以注入服务,但不是 然后,您有另一个注入位置,提供者和配置 那里的函数你只能注入常量和提供者这样一个 提供者有两个部分“提供者部分,即配置”和 如果您注入提供者,那里面的“工厂”就是$ get 在另一个提供程序或配置中,您注入配置部分和 您必须在名称上附加提供者,以便在注射时 “unicornLauncher”进入配置你应该把“unicornLauncherProvider” 如果你去,那将注入配置部分,而不是$ get 一个控制器,你注入unicornLauncher它将注入工厂 在它内部(AKA $ get)你将无法访问 其中包含“usetinfoilshielding”,因为它是提供者的一部分 而不是工厂($ get)里面所以基本上提供者是两部分 并且您使用其中一个或两个不能同时使用