是否可以在不保存更改的情况下侦听路由更改和onwindowunload来确认页面离开?
用例:
如果用户单击“取消”,则停止页面/路线更改。
我看到了几个不同的示例,但没有一个工作得很正确。
演示:http://plnkr.co/edit/Aq8uYg
在演示中,如果您更改输入的值,则在尝试返回时会注意到您。
如果未确认更改,请收听$locationChangeStart
并使用event.preventDefault()
以取消位置更改。
该方法具有以下优点$route.reload()
:当前控制器和模型不会重新实例化。因此,所有变量均与用户单击“返回”按钮保持相同。
问题内容: 如何在AngularJs中取消路线更改事件? 我当前的代码是 即使验证失败,Angular也会提取下一个模板和关联的数据,然后立即切换回上一个视图/路线。如果验证失败,我不希望angular提取下一个模板和数据,理想情况下应该没有window.history.back()。我什至尝试过event.preventDefault()但没有用。 问题答案: 代替使用 这是angularjs专
所以我有2个路由“/管理员路由”和“/超级用户路由”,并且都需要“管理员”和“超级用户”权限才能访问这些路由。 当用户单击此路由时,我检查权限,如果该用户的权限为false,则激活“/无访问”路由保护。 挑战在于,我的应用程序中有面包屑,如果用户处于禁止访问状态,我希望在面包屑中显示他之前访问过的路线。 因此,如果用户尝试访问“/admin-Route”并且他没有管理员权限,则禁止访问路由保护会启
问题内容: 我可以在控制器中看到该事件,但看不到如何告诉Angular留下。我需要弹出类似“您要保存,删除还是取消?”这样的信息。如果用户选择“取消”,则停留在当前“页面”上。我看不到任何允许侦听器取消路由更改的事件。 问题答案: 您正在听错事件,我做了一些谷歌搜索,但在文档中找不到任何内容。快速测试: 在全局控制器中,阻止了位置更改。
问题内容: 提交表单后,更改页面的URL时遇到问题。 这是我的应用程序的流程: 设置了路由,URL被识别到某个表单页面。 页面加载,控制器设置变量,指令被触发。 触发一个特殊格式指令,该指令使用AJAX执行特殊格式提交。 执行完AJAX之后(Angular不会处理AJAX),则触发回调,并且该指令调用设置位置的函数。 问题在于设置位置后什么也没发生。我也尝试过将位置参数设置为……不。我也尝试过不提
问题内容: 示例应用程序: http //angular.github.com/angular- phonecat/step-11/app/#/phones 如果您选择最后一个手机“ Motorola charm”,它将为您显示手机的详细信息。当您在浏览器上浏览时,它将重新加载数据,并且滚动条位于顶部。 导航返回时,自动滚动到剩余位置的最佳方法是什么?而且,为什么角度重新加载数据? 我的计算机上有
问题内容: 我希望通过外部服务为我的路由创建简单的身份验证检查。 我在路由对象上定义访问要求: 然后,我检查我是否有权参加活动。 实际上,它是可行的- 如果未通过身份验证的用户将其移至登录页面,如果已通过身份验证但该路由仅适用于匿名用户,则将其移至另一个页面,依此类推。 但是-这种重定向实际上是在加载控制器和模板之后发生的! 即使我未经身份验证,它也会导致我的控制器对我的REST API进行一些不