Обнаружение события Mousedown в Angularjs

Я знаю, как обнаружить событие mousedown в директиве, которая нажата. Однако моя директива также должна стать unforcused или отменена, когда мышь находится вне моей директивы/ элемента. Как я могу это сделать?

1 ответов


создайте функцию связи в директиве, которая связывает обработчик событий mousedown в документе. Затем свяжите другое событие mousedown с самим элементом директивы. Последний обработчик также должен вызвать event.stopPropagation() чтобы событие не пузырилось до уровня документа:

link: function(scope, elem, attrs){
  angular.element(document).bind('mousedown', function(){
    console.log('clicked on document');
  });

  elem.bind('mousedown', function(e){
    e.stopPropagation();
    console.log('clicked on directive');
  });
}

Рабочая Plunker