반응형
div가 디세이블(ng)인 경우에도 ng-click이 기동됩니다.
문제는 말이다ng-click
동작하는 이벤트입니다.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
.
고객님의 경우 다음과 같습니다.
ng-click="cancelTicket === false || CancelTicket(ticketPin)"
DIV 태그를 버튼 태그로 변경해야 합니다.저는 좋아요.
클릭 이벤트를 비활성화할 수 있습니다.ng-click
이disabled
.
j쿼리:
$('*[ng-click]').on('click',function(event) {
var $el = $(event.target);
if($el.attr('disabled')) {
event.stopPropagation();
}
});
모든 DOM 요소에서 이 작업을 수행하면 원치 않는 결과가 발생할 수 있습니다.또, DOM 상에서 갱신된 새로운 HTML 상에서, 상기의 조작을 실시할 필요가 있습니다.
대신 버튼만 수정하여 예상대로 작동하도록 할 수 있습니다.
각도:
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
너무 무거울 것 같은 요소들이죠.대신 접근 방식을 변경하여button
요소는 클릭 가능한 상호작용에만 사용됩니다.그런 다음 다른 것처럼 스타일링할 수 있습니다.div
요소들.
<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>
제 솔루션은 ng-click 대신 사용되는 속성을 가진 html 디렉티브를 사용하여
<html-tag-directive new-click="ctrl.functionToCall()" disabled="ctrl.disabled" >
및 지시문은 다음과 같이 정의됩니다.
1) 템플릿:
<button type="button"
ng-disabled="disabled" ng-click="onClick()">
</button>
2) 컨트롤러:
angular.module('module')
.directive('htmlTagDirective',function() {
return {
restrict:'E',
templateUrl:'template.html',
scope:{
disabled:'=',
click: '&'
},
link:function(scope,element){
scope.onClick = function() {
if (!(scope.disabled)) {
scope.newClick();
}
};
}
};
});
언급URL : https://stackoverflow.com/questions/32005918/ng-click-still-fires-when-div-is-ngdisabled
반응형
'programing' 카테고리의 다른 글
각도 2의 저장된 배열에서 항목 제거 (0) | 2023.03.14 |
---|---|
소품 파괴 할당(반응/파괴-할당)을 사용해야 합니다. (0) | 2023.03.14 |
Yup에서의 조건부 검증 (0) | 2023.03.14 |
반응: 입력 값이 상태별로 변경되는 경우 onChange를 트리거합니까? (0) | 2023.03.09 |
Oracle의 OVER 절 (0) | 2023.03.09 |