2014-06-23 15 views
9

Tôi có một chỉ thị thực hiện loại hộp chọn.
Bây giờ khi hộp chọn được mở và tôi bấm vào một nơi nào đó bên ngoài nó (bất cứ nơi nào khác trong tài liệu), tôi cần nó sụp đổ.

đang JQuery này hoạt động bên trong chỉ thị của tôi, nhưng tôi muốn làm điều đó "cách góc":

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

Tôi đã cố gắng làm điều với tiêm dịch vụ tài liệu $ vào chỉ thị của tôi, nhưng không thành công.

+0

Ông có thể vui lòng cung cấp jsifddle/plunker? – Miraage

+0

Thực ra bạn viết chỉ thị khi bạn muốn chơi với/thao tác DOM. Vì vậy, tôi đoán gắn trên xử lý sự kiện trong chỉ thị của bạn là cách chính xác hoặc đúng cách góc làm những việc như vậy –

+0

Bạn có thể cho thấy làm thế nào bạn làm điều đó và những gì đã được các lỗi? – Chandermani

Trả lời

17

Tôi tin rằng, cách góc đúng nhất là sử dụng angular.element thay vì jQuery và truy cập window.document thông qua dịch vụ $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

Chính xác những gì tôi cần. Cảm ơn bạn! –

Các vấn đề liên quan