当前位置: 首页 > 面试题库 >

AngularJS中window.onbeforeunload在路由中的等效项

曹鸿风
2023-03-14
问题内容

常规JavaScript具有window.onbeforeunload。如何在具有HTML5路由的AngularJS中模拟相同内容?

有$ beforeRouteChange,但是据我所知,它不允许您取消该事件。

需要说明的是:window.onbeforeunload可用于离开页面导航,但不适用于页面内导航,例如,仅通过HTML5历史API从一个控制器转到另一个控制器。


问题答案:

有一个$locationChangeStart可以取消的事件。

由于尚未记录,因此这里是描述其如何影响$route服务的单元测试。
https://github.com/angular/angular.js/blob/v1.0.1/test/ng/routeSpec.js#L63

不能像window.onbeforeunload这样为用户提供确认。您需要带上自己的对话框服务并重新启动位置更改过程才能获得相同的效果(或者您可以只使用sync
$window.confirm)。



 类似资料:
  • 主要内容:AngularJS 实例,路由设置对象,AngularJS 实例本章节我们将为大家介绍 AngularJS 路由。 AngularJS 路由允许我们通过不同的 URL 访问不同的内容。 通过 AngularJS 可以实现多视图的单页 Web 应用(single page web application,SPA)。 通常我们的 URL 形式为 http://xnip.cn/first/page,但在单页 Web 应用中 AngularJS 通过 #! + 标记

  • 问题内容: 我有一个单页应用程序,实际上只有一个页面。只有一个视图使用angularjs完成了许多javascript / ajax逻辑,但是没有路由到其他视图。 因此,我想在网址末尾混搭hashbang(#/)。我可以以某种方式完全关闭angularjs路由吗? 顺便说一句:我了解Htm5Mode,但是我希望它能在所有浏览器中使用。 问题答案: 如果没有定义,则不会进行路由,因此您的url中不会

  • 问题内容: 我已经按照教程在我的应用程序中实现了路由 http://docs.angularjs.org/tutorial/step_07 我无法在IE7中使用我的版本,花了一段时间尝试找出我错过/做错的事情后,我注意到该示例不起作用。 http://angular.github.com/angular- phonecat/step-7/app/ 有人知道如何使它工作吗? 问题答案: 好的,我遇到

  • 问题内容: 我正在尝试建立一个视图-我设置了两个控制器进行练习,一个是HeaderCtrl,其中包含一些数据(网站标题,标题背景等),另一个应该具有页面的主要内容- MainCtrl。 在定义路线时,我这样做是: 这工作得很好,但是我想要为此指定多个参数,如下所示: 这行不通,所以我猜这不是做到这一点的方法。我实际上要问的是-您可以在$ routeProvider中指定多个控制器吗?还是构建此视图

  • 问题内容: 我有一个网页,可通过Ajax处理机器的远程控制。当用户离开页面时,我想自动与机器断开连接。所以这是代码: 断开连接功能只是将HTTP GET请求发送到PHP服务器端脚本,该脚本完成了断开连接的实际工作: 在FireFox中可以正常工作。但是使用Chrome,根本不会发送ajax请求。有一个不可接受的解决方法:向回调函数添加警报: 添加警报呼叫后,请求将成功发送。但是正如您所看到的,这根

  • 本文向大家介绍angularjs ui-router中路由的二级嵌套,包括了angularjs ui-router中路由的二级嵌套的使用技巧和注意事项,需要的朋友参考一下 关于ui-router中嵌套路由中的问题 1.首先我们的页面层次为   其中Main.html是我们的主页,我们要在main.html中对路由进行统一的管理。 main.html页面中有一个ui-view在这里将填充PageTa