2013-04-13 81 views
11

我想在这里得到一个明确的答案供以后参考,我们有一个稳定的Ember RC。前2 search resultsemberjs google analytics组合显示,这是做轨道路线的变化的好办法:Ember.js和谷歌分析

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') 

,但后来我也看到结果了使用Event Tracking单页面的Web应用程序。

我还没有测试过上面的代码,它需要几个小时才能将更改传播到GA仪表板。 更新:这不会显示在我的Google Analytics信息中心的内容类别下。既不在“页面”或“事件”下。

如果任何人有建议,或者如果有什么我失踪的地方让我知道。我也可以根据这里的答案公布网站指南。

+0

我在RC1上,并且无法读取ApplicationController上下文中route.url的属性。不知道你是否真的需要传递url - 如果你没有通过页面,GA应该记录调用者,但仍然 - 如何获取当前url(不仅仅是路径组件@get('currentPath') – mdrozdziel

+0

我' m使用这种方法,因为几天后它运行良好。它正在跟踪:id也,我不知道如果这是我想要的。 – Rudi

+0

acidburn2k:你说'@get('router.url')'在'Em.run.next'函数中不起作用。用有效的东西更新了问题。 – mehulkar

回答

1

我将_trackPageview用于具有可路由URL的事物和_trackEvent用于不具有可路由URL的事物。

Event Tracking链接的时候提到了“嵌入式AJAX页面元素”。它们并不意味着SPA,而是URL保持不变的情况,但是您希望跟踪的事件发生在页面内(通过AJAX进行)。

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

+0

所以上面的实现是否正确?因为它似乎没有为我追踪任何东西。计算出的属性正在触发。 – mehulkar

+0

不,第一个参数需要_trackPageview。对不起,我没有赶上。 – sapientpants

+0

确认这是现在正在工作! – mehulkar

1

使用routeChanged()不是跟踪诸如/ category/food/category /的动态片段的好方法,因为它只会被触发一次。我在这里写了一篇文章:http://www.randomshouting.com/2013/05/04/Ember-and-Google-Analytics.html。我还咨询了Ember后面的人,并确认这确实是跟踪Google Analytics(分析)网址更改的正确方法。

+0

现在用[更新的路由器](https://gist.github.com/machty/5723945)有更好的/不同的方式来做到这一点? – mehulkar

+0

这是基于Ember RC3的,我不确定现在是否有更好的方法。 甚至在RC3中还有一种方法可以观察路由器的“url”属性,但每次URL更改时都会触发两次通知。如果现在这个问题得到解决,那么你可以使用这种方法。 这两种方法都基于路由器,所以没有太大的区别。 –

2

Alex DiLiberto在他的EmberConf 2014演讲here中给出了一个关于将Google Analytics添加到烬类应用的可扩展的可扩展方法的精彩演讲。 - Slides - GitHub

App.ApplicationRoute = Ember.Route.extend({ 
    actions: { 
    didTransition: function() { 
     Ember.run.once(this, function() { 
     ga('send', 'pageview', this.router.get('url')); 
     }); 
    } 
    } 
}); 

会谈是旨在为使用独立于分析的图书馆。

现在还有一个关于实施Google Analytics here的官方Ember食谱。

0

其中大多数答案已过时。您应该使用混音并将其添加到路由器中,以侦听didTransition事件并在其中触发您的综合浏览量。这样就可以处理所有路线。这里有几个插件,其中包括我写的一个名为ember tracker的插件,它可以为您提供pageviews以及开箱即用的事件跟踪。

你可以看到我是怎么做到的here。这非常简单。

+0

你的意思是'willTransition'或'didTransition'而不是'onTransition' – kumkanillam

+0

唉,谢谢你的收获! – transformerTroy