2014-01-27 2 views
1

클릭 이벤트가 두 번 호출되는 문제가 있습니다. 내가 무엇을 놓치고 있는지 확실하지 않지만이 지시문을 응용 프로그램에 한 번만 포함 시켰습니다. 하나의 요소에만 지시문을 추가하려고 시도했지만 호출은 여전히 ​​두 번 발생합니다.클릭 이벤트가있는 각도 지시문이 두 번 호출됩니다.

코드를 살펴보고 내가 누락 된 부분을 알려주시겠습니까? 클릭 기능 내부

angular.module('mymodule', []) 
.directive('mydirective', function() { 
    return { 
     restrict: 'AE', 
     link: function ($scope, $element, $attrs) { 

      $element.children().bind('click', function() { 

       console.log("test" + this); 

       if ($element.hasClass('active')) { 
        $element.removeClass('active'); 
        return; 
       } else if (!$element.hasClass('active')) { 
        $element.addClass('active'); 
        return; 
       } 
      }); 
     } 
    } 
}); 
+1

'$ element.toggleClass ('active'); 당신의 모든 조건을 위해 거기에 돌아 오십시오. 왜 더블 클릭이 일어나고 있는지 잘 모르겠다 ...'event.stopPropagation(); '시도해보십시오 –

+0

클릭 이벤트를 자식이 아닌 부모 요소에 추가해보십시오. 예를 들어 $ element.parent()를 시도해보십시오. bind ('click ', function() ... –

답변

5

사용이 몇 달 뒤 늦게 대답에 더 내가 난 알고 this

+0

감사합니다. 나는 그것을 놓친다 고 나는 믿을 수 없다! – user686483

1

을 확인

e.stopPropagation(); 

가 알 수있는 이벤트 버블 링 중지하는 I 이 문제에 직면했다. 그러나 여기에있는 신사가이 지시어에이 것을 추가하라고했습니다. 그리고, 그것은 훌륭하게 작동했습니다!

e.stopImmediatePropagation(); 
관련 문제