angularjs가 포함된 두 개의 중첩 클릭 이벤트
저는 다음과 같은 HTML 구조를 가지고 있습니다.
<div ng-click="test()">
<div id="myId" ng-click="test2()"></div>
<div></div>
...
</div>
현재 를 클릭하면div
아이디로myId
두 가지 기능이 모두 작동하게 됩니다.test2
함수가 트리거됩니다.내가 어떻게 그럴 수 있을까?
필요한 것은, 이벤트의 전파나 버블링을 정지하는 것 뿐입니다.
이 코드는 다음을 지원합니다.
<div ng-click="test()">ZZZZZ
<div id="myId" ng-click="test2();$event.stopPropagation()">XXXXX</div>
<div>YYYYYY</div>
...
</div>
만약 당신이test
그리고.test2
함수는 다음과 같습니다.test2
를 클릭할 때 콘솔에서myId
DIV. 미포함$event.stopPropagation()
얻을 수 있을 것이다test2
이어서test
콘솔 출력창에 표시됩니다.
$scope.test = function() {
console.info('test');
}
$scope.test2 = function() {
console.info('test2');
}
톰의 대답과 같긴 하지만 조금 다르지.
<div ng-click="test()">
<div id="myId" ng-click="test2($event)">child</div>
</div>
$scope.test2 =function($event){
$event.stopPropagation();
console.log("from test2")
}
$scope.test =function(){
console.log("from test")
}
다음은 ng-href 링크를 지원하는 다른 질문에 근거한 지시입니다.
지시.
'use strict';
var myApp = angular.module('myApp', [
'ngAnimate'
]);
/**
* @ngdoc directive
* @name myMobileApp.directive:stopEvent
* @description Allow normal ng-href links in a list where each list element itselve has an ng-click attached.
*/
angular.module('myApp')
.directive('stopEvent', function($location, $rootScope) {
return {
restrict: 'A',
link: function(scope, element) {
element.bind('click', function(event) {
// other ng-click handlers shouldn't be triggered
event.stopPropagation(event);
if(element && element[0] && element[0].href && element[0].pathname) {
// don't normaly open links as it would create a reload.
event.preventDefault(event);
$rootScope.$apply(function() {
$location.path( element[0].pathname );
});
}
});
}
};
})
.controller('TestCtrl', ['$rootScope', '$scope', 'Profile', '$location', '$http', '$log',
function($rootScope, $scope, Profile, $location, $http, $log) {
$scope.profiles = [{'a':1,'b':2},{'a':3,'b':3}];
$scope.goToURL = function(path, $event) {
$event.stopPropagation($event);
$location.path(path);
};
}
]);
<div ng-repeat="x in profiles"
ng-click="goToURL('/profiles/' + x.a, $event)">
<a stop-event ng-href="/profiles/{{x.b}}">{{x}}</a>
</div>
언급URL : https://stackoverflow.com/questions/15390393/two-nested-click-events-with-angularjs
'programing' 카테고리의 다른 글
redux 툴킷을 사용할 때 "상태에서 직렬화할 수 없는 값이 검출되었습니다"라는 오류가 표시되지만 일반 redux에서는 검출되지 않습니다. (0) | 2023.03.13 |
---|---|
번호 처리 방법JSON 응답의 역직렬화 시 Gson을 사용하는 FormatException (0) | 2023.03.13 |
Angular Routed 컴포넌트에 데이터를 전달하려면 어떻게 해야 합니까? (0) | 2023.03.13 |
woocommerce 체크아웃 페이지에 업데이트된 데이터 표시 (0) | 2023.03.13 |
속성 'X'는 비공개이며 클래스 'xyzComponent' 내에서만 액세스할 수 있습니다. (0) | 2023.03.13 |