2013-08-06 71 views
1

AngularJS: How to listen to DOM Events?此答案提供了使用ng-click指令。我的場景是我想避免這種方法。angularjs收聽dom事件

這是我的示例代碼

這是我的嘗試。

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

JS Fiddle

我需要一個聽衆中實現,這將聽任何點擊,甚至給定的DOM元素。任何對此的幫助表示讚賞。

+1

我建議閱讀有關'指令'的AngularJS文檔。真的,你應該避免在控制器中的DOM處理。一個建議是創建一個簡單的指令,簡單地使用事件委託來響應你關心委託給的父元素(即主體)上的'click'事件。 – SonOfNun

+10

對不起。但是,爲什麼'ng-click'不適合? http://jsfiddle.net/2nHxs/。 –

回答

4

如果你真的不想使用NG-點擊,你可以使用一個指令,並添加一個簡單的屬性,你的DOM元素

檢查此琴:http://jsfiddle.net/DotDotDot/ZYdEf/5/

我只是創造了一個指令,它綁定元素上的click事件,然後登錄點擊:

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> 

玩得開心