转载于:http://www.cnblogs.com/earl-yongchang/p/5609102.html
重写angularjs的ng-click事件
代码为:
app.config(['$provide',
function ($provide) {
$provide.decorator('ngClickDirective',['$delegate','$timeout',
function ($delegate,$timeout) {
var original = $delegate[0
].compile;
var delay = 500
;//设置间隔时间
$delegate[0].compile =
function (element, attrs, transclude) {
var disabled =
false;
function onClick(evt) {
if (disabled) {
evt.preventDefault();
evt.stopImmediatePropagation();
} else {
disabled =
true;
$timeout(function () { disabled =
false; }, delay,
false);
}
}
// scope.$on('$destroy', function () { iElement.off('click', onClick); });
element.on('click'
, onClick);
return original(element, attrs, transclude);
};
return $delegate;
}]);
}]);
上面的方法有点极端.感觉不太适用.这里提出一个自己在项目中使用的解决方法,其实很简单.就是用变量来控制
1,设置一个全局变量,点击触发方法时,修改变量的值,然后判断变量是否还是原值,如果不是就不再做点击处理了.但后面方法操作完后,需要还原全局变量的值为初始值.
var ok = 'a';
function(){
if(ok=='b'){
return;
}
ok='b';
..........业务逻辑
//最后,需要还原
ok='a';
}