Accordion Header上的按钮重定向angularjs

时间:2015-09-23 17:57:26

标签: javascript jquery angularjs accordion

我遇到了一个奇怪的问题。我有一个嵌套的手风琴,每个手风琴都需要一个像Edit一样的按钮。单击该按钮时,我需要调用另一个函数。我正在做的是单击编辑按钮我正在尝试使用$event.stopPropagation()来停止手风琴功能。但是当我通过$event.stopPropagation()时,这种情况就不会发生了。它正在重定向到其他URL。

我发布了一些我的巨大代码。如果需要任何进一步的信息,请发表评论。

HTML

<accordion-heading>
    {{course.className}}
    <button type="button" 
      ng-show="course.classId!=$scope.null" 
      class="pull-right btn btn-default btn-sm" 
      ng-click="editCourse(course,$event)">
         Edit Course 
    </button>
</accordion-heading>

JS

$scope.editCourse = function(course, ev) {
    ev.stopPropagation();
    course.courseEditPermission = true;
}

app.js

.config(['$routeProvider', '$httpProvider', function($routeProvider, $httpProvider) {
    $httpProvider.defaults.headers.common['Access-Control-Allow-Headers'] = '*';
    delete $httpProvider.defaults.headers.common['X-Requested-With'];
    $routeProvider
        .when('/login', {
            controller: 'LoginController',
            templateUrl: 'modules/authentication/views/login.html',
            hideMenus: true
        })

        .when('/home', {
            controller: 'HomeController',
            templateUrl: 'modules/home/views/home.html'
        })

        .otherwise({
            redirectTo: '/xyz'
        });
}])

我不知道为什么它会重定向但是在我的JS中我提供了路由,所以我认为event.stopPropagation正在获取一些匿名URL,所以它正如我所提到的那样重定向到“/ xyz”。

1 个答案:

答案 0 :(得分:0)

您需要添加event.preventDefault()处理程序,如下所示:

$scope.editCourse = function(course, ev) {
     ev.preventDefault();
     ev.stopPropagation();
     course.courseEditPermission = true;
}