UI Google 分析中的路由器状态变化跟踪
UI Router State Change Tracking in Google Analytics
我有一个使用 UI 路由器的 AngularJS 应用程序。状态变化频繁,但位置路径几乎始终保持为根目录(“/”)。我想跟踪 Google Analytics 中的状态变化,使用您可以与页面浏览量一起使用的所有功能。标准方法是在状态发生变化时发送页面浏览事件,如下所示:
ui-router getting current path on state change for google analytics
问题是对于大多数交互,我的应用程序的 $location.path() 将是“/”。 URL 很少改变。我是 Google Analytics 的非开发人员方面的新手,我担心这会使报告变得不那么可靠。
据我所知,我的选择是:
发送状态名称代替 $location.path(),可能会转换 '.'分隔符变成'/'。
$window.ga('send', 'pageview', { page: '/' + toState.name.replace(/\./g, '/') });
发送一个大部分冗余的 $location.path()(几乎总是“/”),并将状态名称放入其他属性中。
$window.ga('send', 'pageview', { page: $location.path(), someOtherAttribute: toState.name });
在这种情况下有经验的人可以告诉我前进的正确方法吗?
编辑
根据接受的答案的建议,我最终创建了一个具有以下两个功能(以及其他功能)的服务
var convertPageName = function(path,stateName){
var ret = path;
if(stateName) {
ret = ret + ':' + stateName.replace(/\./g, '/');
}
return ret;
};
var callPageView = function(stateName) {
var payload;
if(undefined !== stateName) {
payload = {page:convertPageName($location.path(),stateName), title: stateName};
}
else {
payload = {page: $location.path};
}
$window.ga('set', payload);
$window.ga('send', 'pageview');
};
过去我所做的是将状态或路线更改等更改视为 "Page" 视图。其背后的原因是我们可以更有效地跟踪和玩 google 分析世界。这是因为 GA 最初是围绕基于页面的组件构建的。您想要做的实际上是使用 ga.set
进行绑定,然后推送您的页面视图或正在发送的事件。通过这样做,您现在可以在 GA 中保持所有关联。这使得您的代码如下:
$rootScope.$on("$stateChangeSuccess", function(event, toState, toParams, fromState, fromParams) {
$window.ga('set',{page:$location.path() + toState.name.replace(/\./g, '/'), title:toState.name});
$window.ga('send', 'pageview');
//any other events to send. They're now all going to be associated
//with this state until there is another navigation
});
我有一个使用 UI 路由器的 AngularJS 应用程序。状态变化频繁,但位置路径几乎始终保持为根目录(“/”)。我想跟踪 Google Analytics 中的状态变化,使用您可以与页面浏览量一起使用的所有功能。标准方法是在状态发生变化时发送页面浏览事件,如下所示:
ui-router getting current path on state change for google analytics
问题是对于大多数交互,我的应用程序的 $location.path() 将是“/”。 URL 很少改变。我是 Google Analytics 的非开发人员方面的新手,我担心这会使报告变得不那么可靠。
据我所知,我的选择是:
发送状态名称代替 $location.path(),可能会转换 '.'分隔符变成'/'。
$window.ga('send', 'pageview', { page: '/' + toState.name.replace(/\./g, '/') });
发送一个大部分冗余的 $location.path()(几乎总是“/”),并将状态名称放入其他属性中。
$window.ga('send', 'pageview', { page: $location.path(), someOtherAttribute: toState.name });
在这种情况下有经验的人可以告诉我前进的正确方法吗?
编辑
根据接受的答案的建议,我最终创建了一个具有以下两个功能(以及其他功能)的服务
var convertPageName = function(path,stateName){
var ret = path;
if(stateName) {
ret = ret + ':' + stateName.replace(/\./g, '/');
}
return ret;
};
var callPageView = function(stateName) {
var payload;
if(undefined !== stateName) {
payload = {page:convertPageName($location.path(),stateName), title: stateName};
}
else {
payload = {page: $location.path};
}
$window.ga('set', payload);
$window.ga('send', 'pageview');
};
过去我所做的是将状态或路线更改等更改视为 "Page" 视图。其背后的原因是我们可以更有效地跟踪和玩 google 分析世界。这是因为 GA 最初是围绕基于页面的组件构建的。您想要做的实际上是使用 ga.set
进行绑定,然后推送您的页面视图或正在发送的事件。通过这样做,您现在可以在 GA 中保持所有关联。这使得您的代码如下:
$rootScope.$on("$stateChangeSuccess", function(event, toState, toParams, fromState, fromParams) {
$window.ga('set',{page:$location.path() + toState.name.replace(/\./g, '/'), title:toState.name});
$window.ga('send', 'pageview');
//any other events to send. They're now all going to be associated
//with this state until there is another navigation
});