这是一个指令,我试图在其中禁用基于模型值的链接:
app.directive('disableable', function($parse){
return {
restrict: 'C',
require: '?ngClick',
link: function (scope, elem, attrs, ngClick) {
if (attrs.disable){
var disable = $parse(attrs.disable);
elem.bind('click', function (e) {
if (disable(scope)){
e.preventDefault();
return false;
}
return true;
});
scope.$watch(disable, function (val) {
if (val){
elem.addClass('disabled');
elem.css('cursor', 'default');
}
else {
elem.removeClass('disabled');
elem.css('cursor', 'pointer');
}
});
}
}
};
});
我希望能够禁用所有链接操作,无论它们使用简单的 href 还是 ngClick 操作。由于 preventDefault 调用,Hrefs 工作正常,但我不知道如何深入挖掘 ngClick 并防止它触发。我在 click 事件上所做的绑定不起作用,因为似乎 ngClick 正在绑定我无法控制的自己的处理程序。有什么我可以做的吗?
jsFiddle:http: //jsfiddle.net/KQQD2/2/