为什么$ get方法没有被调用?

时间:2014-10-22 06:09:36

标签: javascript angularjs

我正在尝试以角度编写提供程序,但我无法理解为什么没有调用$ 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函数的打印消息。

1 个答案:

答案 0 :(得分:0)

我从Foxandxss获得了Angular频道对irc的回答,这就是他所说的。

  

有两种不同的注射位置服务,控制器,   指令,运行哦,过滤器,你可以注入服务,但不是   然后,您有另一个注入位置,提供者和配置   那里的函数你只能注入常量和提供者这样一个   提供者有两个部分“提供者部分,即配置”和   如果您注入提供者,那里面的“工厂”就是$ get   在另一个提供程序或配置中,您注入配置部分和   您必须在名称上附加提供者,以便在注射时   “unicornLauncher”进入配置你应该把“unicornLauncherProvider”   如果你去,那将注入配置部分,而不是$ get   一个控制器,你注入unicornLauncher它将注入工厂   在它内部(AKA $ get)你将无法访问   其中包含“usetinfoilshielding”,因为它是提供者的一部分   而不是工厂($ get)里面所以基本上提供者是两部分   并且您使用其中一个或两个不能同时使用