$ locationChangeStart不会调用,但它早先调用过

时间:2018-11-26 11:13:28

标签: javascript angularjs

当有人更改状态时,我想调用preventDefault事件。​​

$scope.$on('$locationChangeStart', (e) => {
  if (!$window.confirm("Are you sure leave this page?")) {
    e.preventDefault();
  }
});

当我尝试离开页面时不起作用。

如果我使用$ rootScope,它将起作用。

当我使用$rootScope.$on event.preventDefault不起作用时。

我该如何解决?

谢谢

1 个答案:

答案 0 :(得分:0)

您需要在运行块内添加一个转换钩:

run(function($transitions) {
    $transitions.onBefore({}, function() {
        function confirmDialog(msg) {
            return new Promise(function(resolve, reject) {
                let confirmed = window.confirm(msg);
                return confirmed ? resolve(true) : reject(false);
            });
        }
    })
});

有关更多信息,请查看以下链接: https://ui-router.github.io/guide/transitionhooks#promises http://vancelucas.com/blog/using-window-confirm-as-a-promise/