如何为我的应用程序检索注射器?

时间:2014-06-23 13:52:38

标签: angularjs

我正在尝试运行一个函数并将服务注入其中。我认为可以使用$injector轻松完成。所以我尝试了以下(简化示例):

angular.injector().invoke( [ "$q", function( $q ) { $q.something(); } ] );

结果为Uncaught Error: [$injector:unpr] Unknown provider: $qProvider <- $q

我知道我可以通过使用angular.injector( ["ng"] )来解决这个问题,但实际上还有几个依赖项。

如果我能够检索在我的应用程序中的其他地方使用的注入器实例,那将完全没问题。

documentation for angular.injector表示您可以使用angular.element(document).injector()检索它,但这会导致我undefined

3 个答案:

答案 0 :(得分:10)

您不应该需要这个,但是您可以使用应用程序的根元素(或任何子元素)获取应用程序的$ injector。 例如,如果你在身体上使用ngApp

angular.element(document.body).injector();

答案 1 :(得分:1)

ExpertSystem的答案非常适合我

这对我来说很有效。我正在尝试从文档“resume”事件中的角度范围之外的角度服务调用函数,以便在我的cordova应用程序中使用。这是我使用的代码

var injector = angular.element(document.body).injector(); //get the document
injector.invoke(['myService', function (myService) {
    myService.doSomething();
}]);

答案 2 :(得分:0)

试试这个:

var $injector = angular.injector(['myApp','ng'])

对于$location,您需要将应用程序引导到页面(启动应用程序):

var $injector = angular.bootstrap(document, ['myApp'])

每次调用时都会返回注入器,但如果脚本已经加载,则不会产生任何冲突。