【问题标题】:Using custom services before the application bootstrap in Angularjs Applications在 Angularjs 应用程序中启动应用程序之前使用自定义服务
【发布时间】:2015-10-05 12:39:50
【问题描述】:

我正在尝试在应用程序引导之前使用自定义服务。

var initInjector = angular.injector(['ng', 'myModule']);

var myCustomService = initInjector.get('myCustomService');

var $http = initInjector.get('$http');

var $q = initInjector.get('$q');

然后在 myCustomService 我得到了:

angular.module('myModule').service('myCustomService',myCustomService);

 function myCustomService($location, $q){
   // some logic
 }

我得到的错误是:

未捕获的错误:[$injector:unpr] 未知提供程序:$rootElementProvider

myCustomService中使用的依赖好像无法加载..

有没有办法更好地组织预引导代码和逻辑?

【问题讨论】:

  • 如果你想在 angular bootstrap 之前做一些事情,不要使用 angular。
  • 在引导您的应用程序之前,您无法使用 injector 获得自定义服务

标签: javascript angularjs


【解决方案1】:

我知道这是一个迟到的答案,但从问题中发布的错误消息来看,$location 似乎应该在应用程序引导之前可用。

要在引导之前获取$location,您需要提供$rootElement。一种方法是对其进行模拟:从 angular-mocks 注入 ngMock 模块以获取注入器。

var initInjector = angular.injector(['ng', 'myModule', 'ngMock']);
var $location = initInjector.get('$location');

还可以查看this StackOverflow postthis GitHub thread

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-24
    • 1970-01-01
    • 2021-08-11
    • 2014-11-21
    • 1970-01-01
    • 1970-01-01
    • 2014-10-13
    • 1970-01-01
    相关资源
    最近更新 更多