代码之家  ›  专栏  ›  技术社区  ›  Onyx

外部和内部div都有ng click,当我单击内部div时,两个ng click都会执行。如何预防?

  •  0
  • Onyx  · 技术社区  · 3 年前

    我有两个div,一个外部div和一个内部div都有ng click。当我尝试单击内部div时,两个函数都会执行(我假设,因为我实际上也在单击外部div,因为它包含内部div)。单击内部div时,如何防止外部div的函数执行?

    <div ng-click="vm.showMoreHandler()">
        <div ng-click="vm.actionHandler($event, action)"></div>
    </div>
    
    1 回复  |  直到 3 年前
        1
  •  1
  •   Kinglish    3 年前

    你可以用 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>