我在调用$ locationChangeStart事件的处理程序内部的e.preventDefault时遇到了一个奇怪的问题。我有这样的事情:
var unregisterCallback = _this.$rootScope.$on('$locationChangeStart', function (e) {
e.preventDefault();
});
这是在其中一个方向的链接函数中发生的。问题是,当我点击一个带有某个路径的锚元素时,它实际上导航到它然后返回。 我使用Angular 1.5的组件路由器。这几乎使得这无用,因为我试图在用户不加保留更改之前显示确认对话框。问题是,由于这种重新导航,他无论如何都会失去所有的变化。知道发生了什么吗?
答案 0 :(得分:0)
在代码中,您试图阻止$ locationChangeStart中的默认事件,但您不希望在单击anchor()标记时导航到新页面。在这种情况下,您可以删除href ="#"在锚标签中并按照以下方法
链接
另一种阻止所有锚标记的默认操作的方法,你可以指令这样做
app.directive('a', function() {
return {
restrict: 'E', // restricts to html elment
link: function(scope, elm, attrs) {
if(attrs.ngClick || attrs.href === '' || attrs.href === '#'){
elm.on('click', function(ev){
ev.preventDefault(); // prevents the default functionality of the tag
});
}
}
};
});