javascript - 如何用普通的旧 JavaScript 读取 Angular 表达式

标签 javascript html arrays angularjs google-analytics

我正在开发的 Angular 应用程序必须从 Angular 读取 Google Analytics ID,然后将其传递给 ga('create', 'UA-XXXXX-Y')在我的index.html 上的标准JavaScript 中

<!-- Google Analytics: change UA-XXXXX-X to be your site's ID -->
<script>
   !function(A,n,g,u,l,a,r){A.GoogleAnalyticsObject=l,A[l]=A[l]||function(){
   (A[l].q=A[l].q||[]).push(arguments)},A[l].l=+new Date,a=n.createElement(g),
   r=n.getElementsByTagName(g)[0],a.src=u,r.parentNode.insertBefore(a,r)
   }(window,document,'script','//www.google-analytics.com/analytics.js','ga');

   ga('create', $rootScope.googleAnalytics );
   // ga('send', 'pageview');
</script>

该应用将服务多个网站,因此 Google Analytics(分析)代码将根据所服务的网站而变化。

代码ga('create', $rootScope.googleAnalytics );不起作用,抛出 Uncaught ReferenceError: $rootScope is not defined

Google Analytics ID 也位于 cookie 中,因此我可以从 JavaScript 中的 cookie 中读取它,但是没有更简单的方法吗?

更新:我已经采取了不将 GA id 放入 $rootScope 中而仅放入 cookie 中并调用 ga('create', gaFromCookie) 的方法。设置cookie后在 Controller 中而不是在index.html上。

最佳答案

您收到的错误是因为此脚本在您的 Angular 应用程序启动之前运行 - 因此我们此时不知道 $rootScope 是什么。您可以在应用初始化后调用 ga(),或者取决于您定义 $rootScope.googleAnalytics 的时间。观察以下示例,我们在模块 run 阶段调用“普通旧”函数。这可能是调用 ga() 的好地方。观察以下示例...

function init(value) {
    ga('create', value);
}

angular.module('app', []).run(function($rootScope) {

    $rootScope.googleAnalytics = 'something'
    init($rootScope.googleAnalytics);
});

JSFiddle Link - 简单的演示

关于javascript - 如何用普通的旧 JavaScript 读取 Angular 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33259784/

相关文章:

java - 如何在 Google AppEngine 中将 HTML 转换为内联 CSS?

c - 结构数组在声明时存储垃圾

javascript - 从节点返回的 json 中的斜线

javascript - 如何在 vue 组件中本地使用 VeeValidate 或任何第三方包

javascript - jstree 节点的持久复制和粘贴

javascript - 使谷歌地图响应调整大小

html - 即使输入有效也会弹出自定义验证消息

javascript - 在drawImage下绘制笔画

谁能解决我的错误

javascript - AngularJS/javascript javascript 对象的特殊排序顺序