如何防止angularJS路由?

时间:2014-09-04 02:38:17

标签: javascript jquery html css angularjs

我的angularJS路线现在有问题。

我这里有一个场景可能会帮助你理解我的问题。

我的网站上有一个菜单和一个子菜单。

当模块内容为url时,表示菜单将自行路由并且不满足子菜单..

当模块的网址为空时,它应该是内容子菜单,当我点击它时,它只会打开菜单查看子菜单..

这是我的代码..

<li id="sidebar-dropdown" data-ng-repeat="mod in modulesData">
   <a href="{{mod.moduleUrl}}" data-toggle="collapse" data-target="#{{mod.moduleId}}" data-ng-click="setCurrentModule(mod)" >
  <i class="fa fa-th"></i> <span>{{mod.moduleName}}</span>
  </a>
  <ul class="collapse" id="{{mod.moduleId}}" style="list-style-type:none">
  <li class="list-group-item no-border" data-ng-repeat="sub in mod.subModule"><a href="{{sub.moduleUrl}}" data-ng-click="setCurrentModule(sub)"><i class="fa fa-th"></i> <span>{{sub.moduleName}}</span></a></li>
  </ul>
</li>

在该代码中,我可以在点击子菜单时显示子菜单,它将路由到其指定的URL,但是当我点击父菜单(据说事件将关闭菜单)时,它将路由到我的主页和生活查看我的子菜单..

这是我的摘要(子菜单)中的视图

enter image description here

当我点击父菜单时,它将关闭子菜单,但会路由到我的主页

enter image description here

我希望有人能帮助我解决这个问题。

我只是希望我的父菜单在点击时不采取任何行动。

1 个答案:

答案 0 :(得分:2)

尝试使用指令:

app.directive('a', function () {
    return {
        restrict: 'E',
        link: function (scope, elem, attrs) {
            if (attrs.href === '' || attrs.href === '#') {
                elem.on('click', function (e) {
                    e.preventDefault();
                });
            }
        }
    };
});

当属性href === ''时,它将阻止采取行动