AngularJS를 프론트 엔드로 사용하여 새 앱을 설정하고 있습니다. 클라이언트 측의 모든 것은 HTML5 푸시 상태로 수행되며 Google 애널리틱스에서 내 페이지 조회수를 추적하고 싶습니다.
답변
ng-view
Angular 앱에서 사용중인 경우 $viewContentLoaded
이벤트를 수신 하고 추적 이벤트를 Google 웹 로그 분석으로 푸시 할 수 있습니다 .
이름이 var _gaq
MyCtrl 인 기본 index.html 파일에 추적 코드를 설정했다고 가정하면 ng-controller
지시문 에서 정의한 것입니다 .
function MyCtrl($scope, $location, $window) {
$scope.$on('$viewContentLoaded', function(event) {
$window._gaq.push(['_trackPageView', $location.url()]);
});
}
업데이트 :
새로운 버전의 google-analytics는이 버전을 사용하십시오.
function MyCtrl($scope, $location, $window) {
$scope.$on('$viewContentLoaded', function(event) {
$window.ga('send', 'pageview', { page: $location.url() });
});
}
답변
에 새보기가로드 AngularJS
되면 Google 웹 로그 분석은 새 페이지로드로 계산하지 않습니다. 다행히도 GA에 URL을 새 페이지 뷰로 기록하도록 수동으로 지시하는 방법이 있습니다.
_gaq.push(['_trackPageview', '<url>']);
작업을 수행하지만 AngularJS와 바인딩하는 방법은 무엇입니까?
사용할 수있는 서비스는 다음과 같습니다.
(function(angular) {
angular.module('analytics', ['ng']).service('analytics', [
'$rootScope', '$window', '$location', function($rootScope, $window, $location) {
var track = function() {
$window._gaq.push(['_trackPageview', $location.path()]);
};
$rootScope.$on('$viewContentLoaded', track);
}
]);
}(window.angular));
각도 모듈을 정의 할 때 다음과 같이 분석 모듈을 포함하십시오.
angular.module('myappname', ['analytics']);
업데이트 :
다음과 함께 새로운 범용 Google 웹 로그 분석 추적 코드를 사용해야합니다.
$window.ga('send', 'pageview', {page: $location.url()});
답변
app.run(function ($rootScope, $location) {
$rootScope.$on('$routeChangeSuccess', function(){
ga('send', 'pageview', $location.path());
});
});
답변
빠른 추가. 새로운 analytics.js를 사용중인 경우 다음을 수행하십시오.
var track = function() {
ga('send', 'pageview', {'page': $location.path()});
};
또한 한 가지 팁은 Google 웹 로그 분석이 localhost에서 실행되지 않는다는 것입니다. 따라서 localhost에서 테스트하는 경우 기본 작성 ( 전체 문서 ) 대신 다음을 사용하십시오.
ga('create', 'UA-XXXX-Y', {'cookieDomain': 'none'});
답변
나는 당신을 도울 수있는 서비스 + 필터를 만들었으며, 나중에 추가하도록 선택하면 다른 공급자와 함께 할 수도 있습니다.
https://github.com/mgonto/angularytics를 확인하고 이것이 어떻게 작동하는지 알려주세요.
답변
wynnwu와 dpineda의 답변을 병합하는 것이 저에게 효과적이었습니다.
angular.module('app', [])
.run(['$rootScope', '$location', '$window',
function($rootScope, $location, $window) {
$rootScope.$on('$routeChangeSuccess',
function(event) {
if (!$window.ga) {
return;
}
$window.ga('send', 'pageview', {
page: $location.path()
});
});
}
]);
세 번째 매개 변수를 $ location.path () 대신 객체로 설정하고 $ stateChangeSuccess 대신 $ routeChangeSuccess를 사용하여 트릭을 수행했습니다.
도움이 되었기를 바랍니다.