Mixpanel с EmberJS

Примечание. Я начал писать этот вопрос, и, написав его, я решил проблему. Я оставлю это здесь, и, надеюсь, это поможет кому-то еще.

Я уже некоторое время бьюсь головой об стену и продолжаю получать противоречивые результаты.

Попытка 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, но теперь я не получаю никакого отслеживания при первой загрузке сайта.


person Matt Baker    schedule 09.01.2014    source источник


Ответы (2)


Отслеживайте изменения маршрутизации для таких служб, как Mixpanel или Google Analytics с помощью EmberJS повторно откройте маршрутизатор и перезапишите вызов метода didTransition API mixpanel/analytics в следующем цикле выполнения Ember.

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

Вот jsbin

person kiwiupover    schedule 09.01.2014
comment
Мне это решение нравится больше, чем внешнее jQuery. Срабатывает ли эта функция при первой записи? - person Matt Baker; 19.01.2014

Окончательное решение

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

Теперь я отслеживаю начальную загрузку страниц, а также переходы внутри приложения.

person Matt Baker    schedule 09.01.2014