2013-04-13 4 views
11

Chciałem uzyskać ostateczną odpowiedź na ten temat w celu późniejszego odniesienia, ponieważ mamy stabilny Ember RC. Połączenie górnej 2 search results dla emberjs google analytics ujawnia, że ​​jest to dobry sposób, aby zrobić zmiany trasy utwór:Ember.js i Google Analytics

App.ApplicationController = Ember.Controller.extend 
    routeChanged: (-> 
    return unless window._gaq 
    Em.run.next -> 
     page = if window.location.hash.length > 0 then window.location.hash.substring(1) else window.location.pathname 
     _gaq.push(['_trackPage', page]) 
).observes('currentPath') 

ale potem także zobaczyć wyniki za korzystanie Event Tracking dla pojedynczych aplikacji strona WWW.

Nie testowałem jeszcze powyższego kodu, rozpowszechnianie zmian na pulpicie nawigacyjnym GA trwa kilka godzin. Aktualizacja: Nie wyświetla się w kategorii Treść na moim pulpicie nawigacyjnym Google Analytics. Ani pod "Strony" ani "Wydarzenia".

Jeśli ktoś ma poradę lub coś jest, czego gdzieś brakuje, daj mi znać. Mogę również zamieścić przewodnik po stronie internetowej na podstawie odpowiedzi tutaj.

+0

Jestem na RC1 i nie mogę odczytać właściwości route.url w kontekście ApplicationController. Nie wiesz, czy naprawdę musisz przekazać adres URL - GA powinno zarejestrować użytkownika, jeśli nie przekazujesz strony, ale nadal - jak uzyskać aktualny adres URL (nie tylko komponent ścieżki @get ("currentPath") – mdrozdziel

+0

m za pomocą tej metody od kilku dni i działa dobrze. Śledzi: id również, nie jestem jeszcze pewien, czy to jest to, co chcę. – Rudi

+0

acidburn2k: masz rację, że '@get ('router.url')' nie działa wewnątrz funkcji 'Em.run.next'. Zaktualizowane pytanie z czymś, co działa. – mehulkar

Odpowiedz

1

Użyłbym _trackPageview dla rzeczy, które mają routowalne adresy URL i _trackEvent dla rzeczy, które tego nie robią.

W łączu Event Tracking, gdy odnoszą się do "Elementy strony wbudowanej AJAX". Nie są to określenia SPA, ale raczej te przypadki, gdy adres URL pozostaje taki sam, ale zdarzenie, które chcesz śledzić, dzieje się na stronie (w przypadku za pośrednictwem AJAX).

Możliwe, że istnieją inne przypadki, w których używanie funkcji _trackEvent jest uzasadnione, ale w przypadku przejść po trasie korzystam z _trackPageview.

+0

, więc czy powyższa implementacja jest poprawna? Ponieważ nie wydaje mi się, żebym coś śledził. wyliczona właściwość uruchamia się. – mehulkar

+0

Nie, pierwszym parametrem musi być _trackPageview. Przepraszam, że wcześniej tego nie złapałem. – sapientpants

+0

potwierdził, że to działa! – mehulkar

1

Używanie funkcji routeChanged() nie jest dobrym sposobem śledzenia dynamicznych segmentów, takich jak/category/food/category/something, ponieważ zostanie uruchomione tylko jeden raz. Napisałem artykuł na ten temat tutaj: http://www.randomshouting.com/2013/05/04/Ember-and-Google-Analytics.html. Konsultowałem się również z osobami odpowiedzialnymi za Ember i potwierdziłem, że jest to właściwy sposób śledzenia zmian adresu URL w Google Analytics.

+0

Czy jest lepszy/inny sposób zrobienia tego teraz z [zaktualizowanym routerem] (https://gist.github.com/machty/5723945)? – mehulkar

+0

To było oparte na Ember RC3, nie jestem pewien, czy jest lepszy sposób, aby to zrobić teraz. Istnieje alternatywa nawet w wersji RC3, w której można zaobserwować właściwość "url" routera, ale powiadomienie było uruchamiane dwukrotnie przy każdym zmianie adresu URL. Jeśli ten problem zostanie rozwiązany teraz, możesz użyć tego podejścia. Oba podejścia są oparte na routerze, więc nie ma dużej różnicy. –

2

Alex DiLiberto bardzo miło opowiedział o solidnym skalowalnym sposobie dodawania Google Analytics do aplikacji ember w jego rozmowie EmberConf 2014 here. - Slides - GitHub

App.ApplicationRoute = Ember.Route.extend({ 
    actions: { 
    didTransition: function() { 
     Ember.run.once(this, function() { 
     ga('send', 'pageview', this.router.get('url')); 
     }); 
    } 
    } 
}); 

Dyskusja celował być niezależna usługa Analytics którego biblioteka została wykorzystana.

Istnieje również oficjalna książka kucharska Ember na temat wdrażania Google Analytics here.

0

Większość z tych odpowiedzi jest nieaktualna. Powinieneś używać mixina i dodawać go do swojego routera, aby słuchać wydarzenia didTransition i tam otwierać swoją odsłonę. W ten sposób obsługiwane są wszystkie trasy. Jest tam kilka dodatków, w tym jeden napisany pod nazwą ember tracker, który daje pageviews i śledzenie zdarzeń poza zestawem.

Możesz zobaczyć, jak to zrobiłem here. To dość proste.

+0

Masz na myśli 'willTransition' lub' didTransition' zamiast 'onTransition' – kumkanillam

+0

Ahhh, dzięki za połów! – transformerTroy