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();
});