0

我一直在寻找一种在初始化我的 angular-js 应用程序时获取服务的方法,但找不到如何让它工作。就我而言,我想获得 $location 服务来观察 url。

环顾四周,我发现可以从注入器中检索服务。为了得到注入器,我像这样引导我的应用程序:

var angularApp = angular.module("MyApp", []);
var angularInjector = angular.injector(["MyApp", "ng"]);
angularApp.run(initializeAngularApp);

initializeAngularApp()
{
    var location = angularInjector.get("$location");
}

这会引发错误:

Unknown provider: $rootElementProvider <- $rootElement <- $location

我的理解是,一旦注入器完成初始化,就应该调用 initializeAngularApp()。但从我得到的错误来看,情况并非如此。

当我的应用程序初始化时,从注入器获取服务的最佳方式是什么?

4

1 回答 1

0

我找到了答案,我不需要自己实例化注入器来获得服务。

服务可以在 run() 函数中注入,这样做:

angularApp.run(intializeAngularApp);

initializeAngularApp($rootScope, $location)
{
    $rootScope.location = $location;
    $rootScope.$watch("location.url()", function () { alert("url changed"); });
}

作品。

于 2013-08-02T15:23:59.870 回答