注意:我开始写这个问题,然后以书面形式解决问题。我会把它留在这里,希望它会帮助别人。
我已经用一段时间将我的头撞在了墙上一段时间,并且不断得到不一致的结果。
尝试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哈希更改时有效,但现在我没有在首次加载网站时进行任何跟踪。
答案 0 :(得分:7)
跟踪Mixpanel或Google 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 });
}
});
现在我可以跟踪初始页面加载以及应用程序内的转换。