3

注意:我开始写这个问题,写完它最终解决了这个问题。我会把它留在这里,希望它能帮助别人。

一段时间以来,我一直在用头撞墙,并且不断得到不一致的结果。

尝试1(从这里

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 哈希更改时有效,但现在我在首次加载网站时没有得到任何跟踪。

4

2 回答 2

7

使用 EmberJS跟踪MixpanelGoogle Analytics等服务的路由更改重新打开路由器并覆盖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

于 2014-01-09T05:52:02.273 回答
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 });
    }
});

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

于 2014-01-09T01:31:40.343 回答