如何在AngularJs中取消路线更改事件?
我当前的代码是
$rootScope.$on("$routeChangeStart", function (event, next, current) {
// do some validation checks
if(validation checks fails){
console.log("validation failed");
window.history.back(); // Cancel Route Change and stay on current page
}
});
即使验证失败,Angular也会提取下一个模板和关联的数据,然后立即切换回上一个视图/路线。如果验证失败,我不希望angular提取下一个模板和数据,理想情况下应该没有window.history.back()。我什至尝试过event.preventDefault()但没有用。
代替$routeChangeStart
使用$locationChangeStart
这是angularjs专家对此的讨论:https
:
//github.com/angular/angular.js/issues/2109
编辑3/6/2018
您可以在文档中找到它:https
:
**//docs.angularjs.org/api/ng/service/$location#event-$locationChangeStart**
例:
$scope.$on('$locationChangeStart', function(event, next, current) {
if ($scope.form.$invalid) {
event.preventDefault();
}
});
问题内容: 我可以在控制器中看到该事件,但看不到如何告诉Angular留下。我需要弹出类似“您要保存,删除还是取消?”这样的信息。如果用户选择“取消”,则停留在当前“页面”上。我看不到任何允许侦听器取消路由更改的事件。 问题答案: 您正在听错事件,我做了一些谷歌搜索,但在文档中找不到任何内容。快速测试: 在全局控制器中,阻止了位置更改。
问题内容: 是否可以在不保存更改的情况下侦听路由更改和onwindowunload来确认页面离开? 用例: 用户点击返回 用户在浏览器中按下后退按钮 用户类型使用其他URL 如果用户单击“取消”,则停止页面/路线更改。 我看到了几个不同的示例,但没有一个工作得很正确。 问题答案: 演示:http://plnkr.co/edit/Aq8uYg 在演示中,如果您更改输入的值,则在尝试返回时会注意到您。
问题内容: 我将一些数据存储在localStorage中 我想在我的angularjs应用程序中看到的是,当localStorage中的数据更改时,该应用程序会重新渲染该应用程序,我该怎么做? 问题答案: 有一个角度的localStorage模块: https://github.com/grevory/angular-local- storage 经过进一步考虑,您可能需要将模块更改为在setIt
问题内容: 提交表单后,更改页面的URL时遇到问题。 这是我的应用程序的流程: 设置了路由,URL被识别到某个表单页面。 页面加载,控制器设置变量,指令被触发。 触发一个特殊格式指令,该指令使用AJAX执行特殊格式提交。 执行完AJAX之后(Angular不会处理AJAX),则触发回调,并且该指令调用设置位置的函数。 问题在于设置位置后什么也没发生。我也尝试过将位置参数设置为……不。我也尝试过不提
我想在windows server 2008中将jdk版本从jdk1.8.0\u 18更新为jdk1.8.0\u 262,所以我在系统中有这两个版本,并且我在环境变量中更改了JAVA HOME,并在PATH中更新了。但当我在命令提示符下键入java-version时,它会返回旧版本,而不会更新到新版本。 我尝试了多个选项,但它是指旧版本。我知道这个基本的,但需要一些帮助来解决问题。
问题内容: 示例应用程序: http //angular.github.com/angular- phonecat/step-11/app/#/phones 如果您选择最后一个手机“ Motorola charm”,它将为您显示手机的详细信息。当您在浏览器上浏览时,它将重新加载数据,并且滚动条位于顶部。 导航返回时,自动滚动到剩余位置的最佳方法是什么?而且,为什么角度重新加载数据? 我的计算机上有