Google analytics Ember.js和谷歌分析

Google analytics Ember.js和谷歌分析,google-analytics,ember.js,Google Analytics,Ember.js,我想在这里得到一个明确的答案,供以后参考,现在我们有一个稳定的余烬RC。google analytics(谷歌分析)的前2名组合显示,这是跟踪路线变化的好方法: App.ApplicationController = Ember.Controller.extend routeChanged: ( -> return unless window._gaq Em.run.next -> page = if window.location.hash.leng

我想在这里得到一个明确的答案,供以后参考,现在我们有一个稳定的余烬RC。google analytics(谷歌分析)的前2名组合显示,这是跟踪路线变化的好方法:

App.ApplicationController = Ember.Controller.extend
  routeChanged: ( ->
    return unless window._gaq
    Em.run.next ->
      page = if window.location.hash.length > 0 then window.location.hash.substring(1) else window.location.pathname
      _gaq.push(['_trackPage', page])
  ).observes('currentPath')
但我也看到了使用单页web应用程序的结果

我还没有测试上面的代码,将更改传播到GA仪表板需要几个小时更新:这不会显示在我的谷歌分析仪表板的内容类别下。“页面”或“事件”下都没有


如果有人有建议或者我在什么地方遗漏了什么,请告诉我。我也可以根据这里的答案为网站发布一份指南

我会用_trackPageview来表示有可路由URL的东西,用_trackEvent来表示没有可路由URL的东西

在链接中,当他们提到“嵌入式AJAX页面元素”时。它们并不是指SPA,而是指URL保持不变的情况,而是希望跟踪的某些事件发生在页面中(在这种情况下是通过AJAX)


在其他情况下,使用_trackEvent可能是有意义的,但对于路由转换,我会使用_trackPageview。

使用routeChanged()不是跟踪动态段(例如/category/food/category/某物)的好方法,因为它只会被触发一次。我在这里写了一篇关于这个的文章:。我还咨询了Ember背后的人,并确认这确实是跟踪Google Analytics url更改的正确方法。

Alex DiLiberto在他的EmberConf 2014演讲中非常好地介绍了一种将Google Analytics添加到Ember应用程序的健壮且可扩展的方法。 - -

这次演讲的目的是独立于使用哪一个分析库


现在还有一本官方的关于实施谷歌分析的恩伯食谱

这些答案大部分都过时了。您应该使用mixin并将其添加到路由器中,以侦听
didtransformation
事件并在那里启动页面视图。这样,所有路线都可以处理。有几个插件,包括我写的一个插件,它提供了
pageviews
和即时事件跟踪


你可以看到我是怎么做到的。这很简单。

我在RC1上,无法在ApplicationController的上下文中读取route.url的属性。不确定是否确实需要传递url-如果不传递页面,GA应记录调用方,但仍然-如何获取当前url(不仅仅是路径组件@get('currentPath'))几天以来我一直在使用这个方法,效果很好。它也在跟踪:id,我还不确定这是否是我想要的。acidburn2k:你是对的,
@get('router.url')
Em.run.next
函数中不起作用。用一些有效的东西更新了问题。
\u gaq.push([''u trackPage',page]))
需要是
\u gaq.push([''轨迹页面视图',第页])
?是的。我把对我有效的解决方案放在这里:那么上面的实现正确吗?因为它似乎没有对我跟踪任何东西。计算属性正在启动。不,第一个参数需要是_trackPageview。很抱歉,我没有更早地了解到这一点。现在有没有更好的/不同的方法来实现这一点?这是基于Emb的呃RC3,我不确定现在是否有更好的方法。即使在RC3中,也有一种方法可以让你观察“url”属性,但每次url更改时都会触发两次通知。如果该问题现在已解决,则可以使用该方法。这两种方法都基于路由器,因此没有太大差异。您的意思是
willTransition
还是
didTransition
而不是
onTransition
App.ApplicationRoute = Ember.Route.extend({
   actions: {
     didTransition: function() {
       Ember.run.once(this, function() {
         ga('send', 'pageview', this.router.get('url'));
       });
     }
   }
});