我在我的项目中使用angulartics,但是当我向模块添加依赖项时,我收到以下错误:
未知提供商:$ rootElementProvider< - $ rootElement< - $ location。
我在angulartics.js
angular.js
在.run中生成:
这里的lib代码:https://github.com/luisfarzati/angulartics/issues/203
$location
是好对象,但$rootElementProvider
和$rootElement
未定义。
如何解决这个问题?
答案 0 :(得分:0)
我最近遇到了同样的问题,我知道这可能发生的唯一原因是当你手动创建一个angularjs注入器时,这取决于在引导期间注入$ location的模块,或者当你试图获得$ location时你自己通过那个注射器。
此问题实际上与angulartics库本身无关,而是与angular自己的$ location服务有关,该服务与$ rootElement有直接依赖关系,该元素是在应用程序引导期间定义的,因此在应用程序启动之前不存在。
有一种简单的方法可以解决这个问题,如果你遇到这个问题,那就是从你的应用程序中删除angulartics作为依赖项,并将其添加为resumeBootstrap方法的依赖项,这允许我们添加更多在恢复angular的引导过程时依赖于运行时。
例如:
angular.module('myApp', [
// array of dependencies without angulartics
]);
var preBootstrapInjector = angular.injector(['ng', 'myApp']);
var $rootScope = preBootstrapInjector.$get('$rootScope');
var myService = preBootstrapInjector.$get('myService');
myService.getDataFromServer()
.then(doSomethingWithThatData)
.then(resumeBootstrap);
function resumeBootstrap(){
// Clean up the custom injector for garbage collection
$rootScope.$destroy();
// Resume Angular's bootstrap process
$(document).ready(function() {
angular.resumeBootstrap([
// dependencies from modules that need $location
'angulartics'
]);
});
}
干杯!