2014-06-23 44 views
9

我有一個指令,它實現了一種選擇框。
現在,當選擇框打開,我點擊它外面的任何地方(文檔中的任何地方),我需要它崩潰。

這個jQuery代碼的工作我的指令裏面,但我想這樣做「的角路」:

$(document).bind('click', function (e) { 
     var $clicked = e.target; 
     if (!$clicked.parents().hasClass("myClass")) { 
      scope.colapse(); 
     } 
    }); 

我試圖做的事情與注射的$文件服務爲我的指令,但沒有成功。

+0

能否請您提供jsifddle/plunker? – Miraage

+0

實際上,當你想玩弄/操作DOM時,你會編寫指令。所以我想在你的指令中附上上面的事件處理程序是正確的方式,或者是做這種事情的角度方式 –

+0

你能告訴你是怎麼做到的,錯誤是什麼? – Chandermani

回答

17

我相信,最真實的角方式是通過$document服務使用angular.element代替jQuery和訪問window.document

(function() { 

    angular.module('myApp').directive('myDocumentClick', 
    ['$window', '$document', '$log', 
    function($window, $document, $log) { 
     return { 
     restrict: 'A', 
     link: function(scope, element, attrs) { 
      $document.bind('click', function(event) { 
      $log.info(event); 
      if (angular.element(event.target).hasClass('myClass')) { 
       $window.alert('Foo!'); 
      } 
      }) 
     } 
     }; 
    } 
    ]); 

})(); 

Plunker link

+0

正是我需要的。謝謝! –

相關問題