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 アナリティクスなどのサービスのルーティング変更を追跡し、ルーターを再度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 に答える