Two nested click events with angularjs

后端 未结 3 515
独厮守ぢ
独厮守ぢ 2020-12-25 09:17

I have a HTML structure like this:

3条回答
  •  春和景丽
    2020-12-25 10:15

    Here is a directive based on another question which supports ng-href links.

    Directive

    '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);
        };
    
      }
    ]);
    
      
    

提交回复
热议问题