请考虑以下事项:Web应用程序的每个页面上的多个(手动引导的)AngularJS应用程序。需要将Web分析跟踪(在本例中为Adobe Omniture / SiteCatalyst)添加到每个应用程序中。但是,我希望将分析代码与AngularJS应用程序的其余部分完全分开 - 能够立刻将其删除。
最好的解决方法是什么?我考虑过以下几点:
答案 0 :(得分:4)
这就是我要做的事情:
1)在应用程序的根目录定义一个名为:" AnalyticsCatcherController" (或类似的东西),该控制器将负责捕获您想要跟踪的所有事件,如下所示:
.controller('AnalyticsCatcherController', ['$scope', function($scope) {
$scope.$on('HitMainLink', function() {
...
});
$scope.$on('FbSharedClick', function() {
...
});
}]);
2)然后你只需$emit
your custom events来自指令的行为,例如:$emit('FbSharedClick')
。
通过这种方式,如果您想要删除分析,您只需要摆脱" AnalyticsCatcherController"。如果您想使用其他跟踪系统:所有逻辑都在" AnalyticsCatcherController"中,与您的应用程序逻辑完全分开。确实,即使你移除了控制器,这些事件仍然会发出,那又怎样呢?它们不会产生任何真正的性能影响,更多:您可能将这些事件用于其他目的,因此您不必将它们视为Google Analytics跟踪系统的一部分。