angularjs 外部和内部div都有ng-click,当我点击内部div时,两个ng-click都会执行,如何防止?

v09wglhw  于 2022-12-22  发布在  Angular
关注(0)|答案(1)|浏览(140)

我有两个div,一个外部的和一个内部的,两个都有ng-click。当我试图点击内部的div时,两个函数都会执行(我这样假设是因为我实际上也在点击外部的div,因为它包含内部的div)。我怎样才能在点击内部的div时阻止外部的div函数执行呢?

<div ng-click="vm.showMoreHandler()">
    <div ng-click="vm.actionHandler($event, action)"></div>
</div>
dxxyhpgq

dxxyhpgq1#

您可以使用event.stopPropagation()来防止它冒泡

angular.module('myApp', [])
  .controller('myCtrl', ['$scope', function($scope) {
    $scope.showMoreHandler = function(e) {
      console.log('showMoreHandler');
    }
    $scope.actionHandler = function(e) {
      e.stopPropagation();
      console.log('actionHandler');
    }

  }]);
div {
  padding: 20px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.7.5/angular.min.js"></script>
<div ng-app="myApp" ng-controller="myCtrl">
  <div ng-click="showMoreHandler($event)">showMoreHandler
    <div ng-click="actionHandler($event)">actionHandler</div>
  </div>
</div>

相关问题