2014-01-09 62 views
2

注:我開始寫這個問題,並在寫它最終解決了問題。我會把它留在這裏,希望它能幫助別人。Mixpanel與EmberJS

我一直在用這種方式撞擊牆壁,現在已經有一段時間了,不斷得到不一致的結果。

嘗試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

最終解決

$(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 }); 
    } 
}); 

現在,我得到了應用程序內跟蹤初始頁面加載和轉換。

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

+0

我喜歡這個解決方案不是外部的jQuery更好。這個功能是否在第一次輸入時被擊中? –

+0

是的,它是。 – kiwiupover