页面离开前的Angularjs确认消息
Angularjs Confirmation Message before page leave
我已经开始使用Angularjs并创建一个小型应用程序。在这个应用程序中,我在页面上向用户显示一个表单。我想在离开页面或刷新页面之前向用户显示确认消息。我使用下面的代码来实现这个目的-
$scope.$on('$locationChangeStart', function(event, next, current) {
if(!confirm("The form is dirty, do you want to stay on the page?")) {
event.preventDefault();
}
});
当我使用这段代码时,它运行得很好,但它在控制台面板中抛出了一个错误。错误为"错误:$digest已在进行中"。
当我搜索这个问题的解决方案时,发现了一些使用$timeout的建议。所以,我在代码中使用了它,如下所示-
$scope.$on('$locationChangeStart', function(event, next, current) {
$timeout( function() {
if(!confirm("The form is dirty, do you want to stay on the page?")) {
event.preventDefault();
}
});
});
当我使用$timeout时,错误会消失,但页面会在确认消息之前离开。
有人知道吗?
您可以使用
$timeout(fn{}, delay);
从angular js文档中,timeout方法采用这样的参数。
$timeout([fn], [delay], [invokeApply], [Pass]);
因此您可以使用超时值。我认为这应该行得通。
尝试在$rootScope而不是本地$scope上修改此事件的代码侦听。
例如:
$rootScope.$on('$locationChangeStart', function(event, next, current) {
if(!confirm("The form is dirty, do you want to stay on the page?")) {
event.preventDefault();
}
});
相关文章:
- 如何在angularJS中编辑时,如果DB中的值为true,则设置复选框,如果值为false,则取消选中复选框
- AngularJS:我可以跳过函数参数回调吗
- AngularJS UI路由器不能像ng路由器那样工作
- 在AngularJS应用程序中使用封装指令和路由的推荐方式是什么
- 如何包含特定于每个视图angularjs的javascript文件
- AngularJS:ng之后,重复$scope值未按预期更新
- AngularJS-在JSON选择器中使用变量名
- 在angularjs复选框输入中更新ng模型或执行ng更改之前需要确认
- angularjs 中的“确认”对话框
- ng-单击上的确认对话框 - AngularJS
- 页面离开前的Angularjs确认消息
- 使用AngularJS的数据确认对话框
- AngularJS $window.确认在 Chrome 中不起作用
- AngularJS实现动态模板-确认对$compile和链接的理解
- 指令来确认AngularJS中的delete按钮
- Angularjs的确认密码指令:为什么它看不到键盘输入
- 如何检查密码和确认密码在AngularJS中也是一样
- 如何从angularjs-rails-resource获取create()、update()上的确认或回调
- 按钮类型上的确认对话框指令=“提交”;——AngularJS
- 在AngularJs中调用$routeChangeStart之前显示确认模式,比如window onbeforeunlo