【发布时间】:2014-06-22 06:18:15
【问题描述】:
我有一个指令disable-ng-clicks,在某些情况下,我想阻止所有属于该指令子项的 ng-click。这是一些示例标记:
<div disable-ng-clicks> <!-- directive -->
<a ng-click="someAction()"></a>
<div ng-controller="myController">
<a ng-click="anotherAction()"></a>
<a ng-click="moreActions()"></a>
</div>
</div>
如果这些是普通的超链接,我可以在 link 函数中执行类似的操作:
function(scope, iElement, iAttrs) {
var ngClicks = angular.element(iElement[0].querySelectorAll('[ng-click]'));
ngClicks.on('click', function(event) {
if(trigger) { // a dynamic variable that triggers disabling the clicks
event.preventDefault();
}
});
}
但这不适用于ng-click 指令。有没有其他方法可以做到这一点?
【问题讨论】:
-
嗯,您单击的元素不是 div,而是锚点。您应该将它放在每个锚点中或更改指令以禁用 ng-click 子元素。你正在做的方式它只适用于具有指令的元素。
-
我不确定我是否理解。我可以将点击处理程序附加到父级上,当我点击一个子级时它会执行。
-
是的,您可以这样做,但您需要更改指令以从具有 It 的元素中查找每个子项。
-
啊,我明白你在说什么。我更新了问题。
标签: angularjs angularjs-ng-click