2014-01-27 53 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

使用這種點擊函數內部停止冒泡事件

e.stopPropagation(); 

瞭解更多檢查this

+0

謝謝你們,我簡直不敢相信我錯過了! – user686483

1

我知道我遲到了要回答這一問題,並在幾個月後,我也面臨着這個問題。然而,這裏的一位紳士要求我在指令中附加這一點。而且,它效果很好!

e.stopImmediatePropagation();