2013-08-06 5 views
1

AngularJS: How to listen to DOM Events? Этот ответ предоставляется с помощью директивы ng-click. Мои сценарии состоят в том, что я хочу избежать такого подхода.angularjs прослушивает домашние события

Это мой пример кода

Вот моя попытка.

$('#test').on({ 
      click: function (e) { 
       console.log("test..."); 
      } 
     }); 
$('#login').on({ 
      click: function (e) { 
       console.log("test..."); 
      } 
     }); 

JS Fiddle

мне нужен слушатель будет реализован, который будет слушать клике даже данного йот элемента. любая помощь в этом оценивается.

+1

Предлагаю ознакомиться с документами AngularJS по «директивам». На самом деле вам следует избегать обработки DOM в контроллерах. Одним из предложений было бы создать простую директиву, которая просто использует делегирование событий для ответа на события «click» на родительском элементе, которому вы хотите делегировать (т. Е. Тело). – SonOfNun

+10

Извините. Но почему 'ng-click' не подходит? http://jsfiddle.net/2nHxs/. –

ответ

4

Если вы действительно не хотите использовать нг-клик, вы можете использовать директиву и добавить простой атрибут вам DOM элементов

Проверить это манящее: http://jsfiddle.net/DotDotDot/ZYdEf/5/

Я просто создал директиву, которая связать событие щелчка на элементе, а затем зарегистрировать клик:

directive('clickable', function(){ 
    return function(scope, elt, attr){ 
     elt.bind('click', function(e){ 
      console.log('hello from',elt) 
     }) 
}) 

затем, в вашем HTML это очень легко:

<a href="#" id="test" clickable>Click</a> 
<a href="#" id="login" clickable>Log</a> 

Удачи!

Смежные вопросы