2013-08-17 4 views
1

안녕하세요. GA에 대한 이벤트 (예 : 클릭 이벤트)를 추적하도록 지시를 구현하려고하지만 어떤 이유로 애플리케이션의 클릭 이벤트로 인해 지시문이 실행되고 있습니다. 여기 있습니다.Google 애널리틱스 angularjs 지시문 추적 이벤트

다음
myApp.directive('bcaTrackEvent', function() { 
    return { 
     restrict: "A", 
     link: function ($rootScope, element, attrs, ctrl) { 

      $rootScope.gaPlugIn.trackEvent(function(){}, function(){}, element.type, "Click", element.name, 1); 
     } 
    }; 
}); 

것은 내가 그것을 사용하고있다 : 내 코드 나는 그런데 폰갭 GA 플러그인을 사용하고

<div id="layout"> 
    <p class="blank"></p> 
    <p class="logo"></p> 
    <p class="blank"></p> 
    <div id="signOptions"> 
     <a ng-href="#/SignIn"><input bca-track-event name="signIn" class="bigbutton" type="button" value="{{'_SignIn_' | localizeIt}}" /></a> 
     <a ng-href="#/SignUp"><input class="bigbutton" type="button" value="{{'_SignUp_' | localizeIt}}"/></a> 
     <p class="blank"></p> 
     <a class="tourlink" href="#/TakeTour" data-localize-it="_TakeTour_"></a> 
    </div> 
</div> 
+0

plnkr.co 또는 이와 유사한 것을 사용하여 작동 예제를 제공 할 수 있습니까? – Jonas

+0

지시문이 적용된 요소의 click 이벤트를 바인딩하면 안됩니까? –

+0

@Javito, 나는이 매개 변수'function() {}, function() {}'을'trackEvent' 함수 안에 넣습니다. –

답변

2

지시어가 처음 추가 될 때 지침의 링크 기능이 항상 실행됩니다 그래서 매번 코드가 실행됩니다. 지시문의 링크 함수 안에 클릭 이벤트 처리기를 추가해야하며 이는 클릭 할 때만 실행되는 비트가됩니다.

myApp.directive('bcaTrackEvent', function() { 
    return { 
     restrict: "A", 
     link: function ($rootScope, element, attrs, ctrl) { 

      element.on("click", function() { 
       $rootScope.gaPlugIn.trackEvent(function(){}, function(){}, element.type, "Click", element.name, 1); 
      }); 

     } 
    }; 
}); 

매개 변수 link 함수에 전달 된 매개 변수는 항상 범위, 요소, 특성 및 컨트롤러입니다. $ rootScope를 매개 변수로 썼지 만 실제로 지시어 안에 $ rootScope라는 일반 범위의 이름을 바꾼다. 이 상황에서 범위 상속은 어쨌든 작동한다는 것을 의미하지만 잠재적 인 혼란을 막기 위해 변수를 scope으로 바꾸는 것이 더 나을 것이라고 생각합니다.

실제 $ rootScope가 필요하면 링크 기능이 아닌 지시문 자체에 삽입하십시오.

myApp.directive('bcaTrackEvent', function ($rootScope) { 
+0

나는'trackEvent' 함수 안에'function() {}, function() {}'과 같은 매개 변수를 가지고 있습니다. –

관련 문제