Angularjs $locationChangeStart上的event.preventDefault()不';I don’我没有按预期工作
我在为$locationChangeStart事件调用e.preventDefault内部处理程序时遇到了一个奇怪的问题。我有这样的想法:Angularjs $locationChangeStart上的event.preventDefault()不';I don’我没有按预期工作,angularjs,angular-component-router,Angularjs,Angular Component Router,我在为$locationChangeStart事件调用e.preventDefault内部处理程序时遇到了一个奇怪的问题。我有这样的想法: var unregisterCallback = _this.$rootScope.$on('$locationChangeStart', function (e) { e.preventDefault(); }); 这是在其中一个方向的链接函数中发生的。问题是,当我单击带有某个路径的锚元素时,它实际上会导航到它,然后返回。 我正在使用Angula
var unregisterCallback = _this.$rootScope.$on('$locationChangeStart', function (e) {
e.preventDefault();
});
这是在其中一个方向的链接函数中发生的。问题是,当我单击带有某个路径的锚元素时,它实际上会导航到它,然后返回。
我正在使用Angular 1.5中的组件路由器。这几乎使这个usless,因为我试图显示一个确认对话框之前,用户nagivates离开,而不保存更改。问题是,由于这种重新导航,他无论如何都会丢失所有的更改。知道发生了什么吗?在代码中,您试图阻止$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
});
}
}
};
});
在代码中,您试图阻止$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
});
}
}
};
});
你的“链接”不是链接(只是文本)。此外,锚点还有一个ng href属性,用于指定导航到的路径。您的“链接”不是链接(只是文本)。此外,锚点还有一个ng href属性,用于指定要导航到的路径。