繁体   English   中英

为什么不调用$ get方法?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM