问题描述
我正在尝试在应用程序引导之前使用自定义服务。
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 <- $rootElement <- $location <- myCustomService <- $location
似乎无法加载 myCustomService 中使用的依赖项..
有没有办法更好地组织预引导代码和逻辑?
1楼
我知道这是一个迟到的答案,但从问题中发布的错误消息来看,似乎$location
应该在应用程序引导之前可用。
要在引导之前获取$location
,您需要提供$rootElement
。
一种方法是模拟它:从 angular-mocks 注入 ngMock 模块以获取注入器。
var initInjector = angular.injector(['ng', 'myModule', 'ngMock']);
var $location = initInjector.get('$location');
另请查看和。