2013-06-05 12 views
8

Tôi đang sử dụng Durandal 1.2 và Durandal Router Plugin và muốn theo dõi lượt xem trang trong SPA thông qua Google Analytics: window._gaq.push(['_trackPageview', location.pathname + location.search + location.hash]Durandal Google Analtyics Tracking

Tôi biết tôi có thể lắng nghe cho sự kiện hashchange hoặc thậm chí treo vào qua Sammy . Tôi không muốn làm điều đó vì Durandal hiện đang là rewritten để loại bỏ sự phụ thuộc vào Sammy.

Câu hỏi của tôi là, có cách nào để thiết lập điều này bằng cách sử dụng Plugin Bộ định tuyến Durandal không?

Trả lời

5

Hãy xem onNavigationComplete trong bộ định tuyến. Bạn có thể ghi đè lên đó để làm phân tích của bạn:

// Store reference to router's onNavigationComplete so you can call it 
var onNavigationComplete = router.onNavigationComplete; 

router.onNavigationComplete = function (routeInfo, params, module) { 
    // Run the default onNavigationComplete 
    onNavigationComplete.call(this, routeInfo, params, module); 

    // Analytics! 
    window._gaq.push(['_trackPageview', location.pathname + location.search + location.hash] 
}; 

Rõ ràng bạn sẽ cần phải làm một nơi nào đó rất sớm trong vòng đời của ứng dụng, chẳng hạn như trong main.js của bạn.

4

Bạn cũng có thể đính kèm vào sự kiện navigation complete, để bạn không phải lưu trữ chức năng ban đầu của bộ định tuyến.

//Update anaytics whenever the router navigates 
router.on('router:navigation:complete', function(instance, instruction) { 
    window._gaq.push(['_trackPageview', instruction.fragment]); 
});