Javascript 禁用div(ng)时,ng click仍然激发
问题是,Javascript 禁用div(ng)时,ng click仍然激发,javascript,angularjs,Javascript,Angularjs,问题是,ng click对so事件起作用,如果cancelTicket===false它仍然激发ng click。我怎样才能阻止它 <div class="btn-block save-changes padding-10" ng-class="{'gray':cancelTicket===false,'secondary-button':cancelTicket===true}" ng-click="CancelTicket(ticketPin)" ng-disabled="cancel
ng click
对so事件起作用,如果cancelTicket===false
它仍然激发ng click
。我怎样才能阻止它
<div class="btn-block save-changes padding-10" ng-class="{'gray':cancelTicket===false,'secondary-button':cancelTicket===true}" ng-click="CancelTicket(ticketPin)" ng-disabled="cancelTicket===false" style="display: table;">
<div class="button-container padding3" ng-class="{'pointer':cancelTicket===true}">
<button-spinner promise="cancelPromise"></button-spinner>
<div style="display: inline-block !important;"> @Translator.Translate("CANCEL") </div>
</div>
</div>
@翻译(“取消”)
即使禁用了div
,也会触发事件
您可以通过对表达式(如isDisabled | | action()
进行惰性求值来避免这种情况,因此,如果isDisabled
为true
,则不会调用action
在您的情况下,它将是:
ng-click="cancelTicket === false || CancelTicket(ticketPin)"
当具有
ng click
的元素被禁用时,可以禁用click事件
jQuery:
$('*[ng-click]').on('click',function(event) {
var $el = $(event.target);
if($el.attr('disabled')) {
event.stopPropagation();
}
});
angular.module('app').directive('button',function() {
return {
restrict: 'E',
link: function(scope,el) {
var $el = angular.element(el);
$el.bind('click', function(event) {
if($el.attr('disabled')) {
event.stopImmediatePropagation();
}
});
}
}
});
在所有DOM元素上执行此操作可能会产生不需要的结果。此外,您还需要在DOM上更新的任何新HTML上运行上述操作
相反,我们只需修改按钮即可按预期工作
角度:
$('*[ng-click]').on('click',function(event) {
var $el = $(event.target);
if($el.attr('disabled')) {
event.stopPropagation();
}
});
angular.module('app').directive('button',function() {
return {
restrict: 'E',
link: function(scope,el) {
var $el = angular.element(el);
$el.bind('click', function(event) {
if($el.attr('disabled')) {
event.stopImmediatePropagation();
}
});
}
}
});
我不会在div
元素上执行上述操作,因为它太重了。相反,请修改您的方法,使按钮
元素仅用于可单击的交互。然后,您可以将其样式设置为与其他div
元素类似。您应该将div标记更改为Button标记。
它适合我。Delete
<a class="btn btn-danger btn-xs" ng-click="vm.handleRemove(device)" ng-disabled="status === 1">Delete</a>
将标签更改为按钮标签,然后确定
<button class="btn btn-danger btn-xs" ng-click="vm.handleRemove(device)" ng-disabled="status === 1">Delete</button>
删除
我的解决方案是使用带有属性的html指令,而不是ng click,以便
<html-tag-directive new-click="ctrl.functionToCall()" disabled="ctrl.disabled" >
是的,即使该事件为false,也会发生。如果该事件为false,您需要在代码中小心。在CancelTicket函数中使用“return”@BhojendraNepal where in code?进行此操作时,Angular会出现“尝试将值分配给非l值”错误。这是有效的。我一直在寻找这个答案很久了:)在调用同一个func但发送diff项作为输入的ng repeat中,这是否有效@同样的问题,完美的解决方案!我可以通过ng click=“cancelTicket&&cancelTicket(ticketPin)”:)