Javascript AngularJS使用HTML5模式单击除此处以外的任意位置

Javascript AngularJS使用HTML5模式单击除此处以外的任意位置,javascript,angularjs,html,angularjs-directive,Javascript,Angularjs,Html,Angularjs Directive,我正在使用以下指令: app.directive("ngOutside", function($document, $rootScope){ return { restrict: "A", link: function(scope, elem, attr, ctrl){ elem.bind("click", function(e){ e.stopPropagation(); }); $document.bind("cli

我正在使用以下指令:

app.directive("ngOutside", function($document, $rootScope){
  return {
    restrict: "A",
    link: function(scope, elem, attr, ctrl){

      elem.bind("click", function(e){
        e.stopPropagation();
      });

      $document.bind("click", function(){
        $rootScope.$apply(function(){
          $rootScope.nav = false;
          $rootScope.aside.on = false;
        });
      });

    }
  }
});
现在,我将其应用于我的HTML中,如下所示:

<nav ng-outside>
  <ul>
    <li><a href="/home">Home</a></li>
    <li><a href="/dashboard">Dashboard</a></li>
  </ul>
</nav>

如何在HTML5模式下实现“单击除此处以外的任何位置”类型指令而不中断链接?

您是否在索引文件中指定了基本href@邓肯:是的,在那里。我认为问题不在于使用HTML5模式,因为当我删除该指令的e.stopPropagation部分时,路由更改工作得很好。e.preventDefault是否没有达到预期效果?@Mikey否e.stopPropagation用于在单击指令元素时停止指令触发。这个想法就是从这里开始的:为了理解这里的用例,我绞尽脑汁想弄明白,你告诉angular不要让用户点击导航,但是你仍然希望导航元素中的链接接受点击?
elem.bind("click", function(e){
  e.stopPropagation();
});