Mixpanel与EmberJS

时间:2014-01-09 01:31:40

标签: ember.js transitions mixpanel

注意:我开始写这个问题,然后以书面形式解决问题。我会把它留在这里,希望它会帮助别人。

我已经用一段时间将我的头撞在了墙上一段时间,并且不断得到不一致的结果。

尝试1 (来自here

App.ApplicationController = Ember.Controller.extend({ 
    routeChanged: function (){
        mixpanel.track("pageview", {"url": window.location.href });
    }.observes('currentPath')
});

我不得不偏离示例,因为mixpanel.track_pageview()已弃用。这导致错误的位置记录,因为在转换重写URL时我无法找到新的哈希路径,并且此时URL尚未更新。

尝试2

$(window).on('hashchange', function(){
    mixpanel.track("pageview", {"url": window.location.href });
});

这在URL哈希更改时有效,但现在我没有在首次加载网站时进行任何跟踪。

2 个答案:

答案 0 :(得分:7)

跟踪MixpanelGoogle Analytics等服务的路由更改,EmberJS重新打开路由器并覆盖didTransition方法,调用下一个Ember运行循环中的mixpanel / analytics api。

Ember.Router.reopen({
  didTransition: function(paths){
    this._super(paths);
    Ember.run.next(function(){
      path = window.location.href;
      mixpanel.track("pageview", {"url": path });
    });
  }
});

这是jsbin

答案 1 :(得分:0)

最终解决方案

$(window).on('hashchange', function(){
    mixpanel.track("pageview", {"url": window.location.href });
});

Ember.Application.initializer({
    initialize: function(container, application) {
        mixpanel.track("pageview", {"url": window.location.href });
    }
});

现在我可以跟踪初始页面加载以及应用程序内的转换。