首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >AngularJS和分析.分离关注点

AngularJS和分析.分离关注点
EN

Stack Overflow用户
提问于 2014-09-08 16:16:31
回答 1查看 1.6K关注 0票数 2

考虑以下情况: web应用程序的每个页面上都有多个(手动引导的) AngularJS应用程序。需要在每个应用程序中添加Web分析跟踪(在本例中为Adobe/Site催化剂)。但是,我希望将分析代码与AngularJS应用程序的其他部分完全分离--能够在一开始就删除它。

做这件事最好的方法是什么?我考虑了以下几点:

  • 编写JQuery代码来检查DOM并提交SiteCatalyst调用(将有效,但不太适合AngularJS)
  • 找到用额外的分析代码扩展AngularJS控制器和包装方法的方法。这可能还涉及为作用域变量添加$watch代码。
  • 拦截AngularJS事件的其他一些方法,类似于使用HTTP拦截器所能做的事情。
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-08 16:49:04

这就是我要做的:

1)在应用程序的根部定义一个控制器,名为"AnalyticsCatcherController“(或类似的内容),该控制器将负责捕获您想要跟踪的所有事件,如下所示:

代码语言:javascript
运行
复制
  .controller('AnalyticsCatcherController', ['$scope', function($scope) {
    $scope.$on('HitMainLink', function() {
      ...
    });
    $scope.$on('FbSharedClick', function() {
      ...
    });
  }]);

然后,您只需从指令的操作中提取 your custom events,如:$emit('FbSharedClick')

这样,如果您想要删除分析,您只需去掉"AnalyticsCatcherController“。如果您想使用另一个跟踪系统:所有的逻辑将在"AnalyticsCatcherController“中,与应用程序的逻辑完全分离。确实,即使您移除控制器,这些事件仍然会被发出,那又如何?此外,它们不会产生任何真正的性能影响:您可以将这些事件用于其他目的,因此您不必将它们作为分析跟踪系统的一部分。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25728629

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档