常规JavaScript具有window.onbeforeunload。如何在具有HTML5路由的AngularJS中模拟相同内容?
有$ beforeRouteChange,但是据我所知,它不允许您取消该事件。
需要说明的是:window.onbeforeunload可用于离开页面导航,但不适用于页面内导航,例如,仅通过HTML5历史API从一个控制器转到另一个控制器。
有一个$locationChangeStart可以取消的事件。
$locationChangeStart
由于尚未记录,因此这里是描述其如何影响$route服务的单元测试。 https://github.com/angular/angular.js/blob/v1.0.1/test/ng/routeSpec.js#L63
$route
不能像window.onbeforeunload这样为用户提供确认。您需要带上自己的对话框服务并重新启动位置更改过程才能获得相同的效果(或者您可以只使用sync $window.confirm)。
window.onbeforeunload
$window.confirm