使用Angulartics与AngularJS的注射器错误

时间:2014-05-14 10:08:57

标签: javascript angularjs google-analytics angulartics

我在添加 Angulartics 时遇到问题。

在我的 app.js 中,我刚刚添加了两个依赖项( Angulartics 和最后一个),您可以看到:

var smsApp = angular.module('smsApp', [
  'ngRoute',
  'smsControllers',
  'smsFilters',
  'google-maps',
  'pascalprecht.translate',
  'angulartics',
  'angulartics.google.analytics',
]);

然后在我的 index.html 中添加了:

<script src="./js/angulartics.js">
<script src="./js/angulartics-ga.js"> ---- paths to these files are ok
但是当我想用:

创建该模块时
var injector = angular.injector(['smsApp', 'ng']);

我收到了这个错误:

Uncaught Error: [$injector:unpr] http://errors.angularjs.org/1.2.15/$injector/unpr?p0=%24rootElementProvider%20%3C-%20%24rootElement%20%3C-%20%24location

没有 Angulartics 它很顺利!请帮帮我:)谢谢

我正在关注此tutorial

2 个答案:

答案 0 :(得分:4)

假设您正在阅读此处的文档:https://github.com/angulartics/angulartics

您需要运行&#39; bower install angulartics-google-analytics --save&#39;

来安装angularitics.google.analytics插件

答案 1 :(得分:1)

为什么要使用注射器?

如果您正在使用injector,则表示您未使用常规的AngularJS引导代码,因此未定义$rootElement

你可以嘲笑这个对象:

<script src="/path/to/angular-mock.js">
...
var injector = angular.injector(['smsApp', 'ngMock', 'ng']);

或明确地在您的应用中定义

smsApp.config(['$provide', function($provide) {
    // Should match the element that contains your ng-app="smsApp" attribute
    $provide.value('$rootElement', angular.element(document.body)); 
}]);