在angular中,默认不支持事件代理,但是在处理大量数据的时候,尤其是一些列表的时候,事件代理是必须的,那应该怎么样实现这个代理呢,并且用起来很方便呢,此处实现一个,有参考nishp1的angular-delegate-event实现;增加了对象式代理,详见使用方法
##使用方法:##
<ul ngd-click="itemClick($event, item)" selector="a">
<li ng-repeat="item in items"><a href="javascript:;">item.name</a></li>
</ul>
<ul ngd-event="itemClick($event, item)" event-name="click" selector="li">
<li ng-repeat="item in items"><a href="javascript:;">item.name</a></li>
</ul>
<ul ngd-event="{click:'itemClick($event, item)','dblclick':'itemDblClick($event)'}" selector="{click:'li',dblclick:'a'}">
<li ng-repeat="item in items"><a href="javascript:;">item.name</a></li>
</ul>
内置的一些事件:click
, dblclick
, mousedown
, mouseup
, mouseover
, mouseout
, mousemove
, mouseenter
, mouseleave
####controller写法####
// 依赖DelegateEvents
var app = angular.module('app', ['DelegateEvents']);
app.controller('listCtl', function($scope) {
$scope.itemClick = function(e, item) {
// do something...
// 注:
// e 原始的event对象,但是增加了delegationTarget => 代理target元素
//
// 对于selector这块,如果引用了jQuery的话,则支持的是jquery的选择器
// 对于支持matchesSelector的浏览器来说,支持的就是标准的选择器;
// 否则的话只能支持tagName...
};
// itemDblClick 同理。。
})