2014-06-23 20 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

正是我需要的。谢谢! –

相关问题