页面休假前的Angularjs确认消息

时间:2015-12-09 05:38:24

标签: javascript angularjs

我已经开始使用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时,错误消失,但页面在确认消息之前离开。

有人对此有所了解吗?

2 个答案:

答案 0 :(得分:0)

你可以使用

$timeout(fn{}, delay);
来自angular js文档的

,timeout方法接受这样的参数。

$timeout([fn], [delay], [invokeApply], [Pass]);

所以你可以使用超时值。我认为这应该有用。

答案 1 :(得分:0)

尝试修改代码在$ 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();
    }
});