AngularJS - multiple ng-click - event bubbling

后端 未结 2 1622
陌清茗
陌清茗 2021-02-05 00:40

In the following example:

  
  • {{item.title}}

  • 相关标签:
    2条回答
    • 2021-02-05 01:19

      showItem can be updated to return early if the passed in item no longer exists:

      function remove(item) {
        if (-1 == $scope.items.indexOf(item)) {
          // Item no longer exists, return early
          return;
        }
        // Rest of code here
      }
      
      0 讨论(0)
    • 2021-02-05 01:25

      This solution worked for me (I'm only supporting recent browsers, so I tried to modify the code to be more retro-compatible):

      HTML:

      <li ng-repeat="item in items" ng-click="showItem(item)">
          <h3>{{item.title}}</h3>
          <button ng-click="remove(item, $event)">Remove</button>
      </li>
      

      Scripts:

      function remove(item, $event) {
          // do some code here
      
          // Prevent bubbling to showItem.
          // On recent browsers, only $event.stopPropagation() is needed
          if ($event.stopPropagation) $event.stopPropagation();
          if ($event.preventDefault) $event.preventDefault();
          $event.cancelBubble = true;
          $event.returnValue = false;
      }
      function showItem(item) {
          // code here
      }
      

      EDIT - Added a JSFiddle demo to try it out http://jsfiddle.net/24e7mapp/1/

      0 讨论(0)
    提交回复
    热议问题