javascript - 防止从 url 导航到另一个页面

标签 javascript angularjs

我会尽力解释我的问题。我有一个网页A,当我完成A中的一个过程时,我可以转到页面B。当我完成页面B上的过程时,我可以转到页面C。因此我可以有n个页面。到第 n 页。 我希望用户如果没有先访问页面 A 或页面 B,就永远无法访问页面 C。换句话说,我想强制用户使用页面的内部导航。也就是说用户不能在浏览器中写入url,或者重新加载页面,如果发生这种情况,应该重定向到特定页面。

从 Angular 来看,这设法在进入任何特定 Controller 之前设置一些条件。

//similar to $statechange
angularRoutingApp.run(function ($rootScope, $state, $location, $transitions) 
{
$transitions.onStart({}, trans = > {
    $state.go('anystate', trans.targetState())
 });
}

通过 JavaScript,我可以知道页面何时重新加载。

if ($window.performance.navigation.type == 1) {
 console.info( "This page is reloaded" );
} else {
console.info( "This page is not reloaded");
}

但在这两种情况下我都有一个问题: 如果我在 A 中并且还没有完成该过程,并且立即从浏览器 url 中写入 B 的 url,则会破坏我想要的条件。但是如果我在B再充值,现在检测到页面已经重新加载了。

我希望让自己被理解。

我能做什么?

最佳答案

Angular 被设计为单页应用程序,并且不喜欢刷新时的情况。为此,您需要存储您的信息(在 session 、cookie 等中),然后在确定自己所在位置后执行操作。

为了处理对不同页面的访问,我建议在您的配置中使用解析器。您将检查存储的数据并相应地重定向。在路线更改之前解决 promise 的交易,因此它会在 angularRoutingApp.run() 之前运行

此外,$stateProvider允许您使用自定义 Controller 嵌套页面,这可以简化您的解析。更多关于如何inject the results from the parent resolve into the child resolve function

关于javascript - 防止从 url 导航到另一个页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46638736/

相关文章:

javascript - 第二个 promise 决定不解雇

javascript - Angular.js 仅在前端或后端处理数据

javascript - 如何在 AngularJS 路由中匹配可选和未确定的路由?

javascript - Apostrope Js - 上传文件 (apostrope-pieces-submit-widgets)

javascript - AngularJS 指令 - 将 ngModel 与 jQuery 小部件一起使用时的最佳实践

javascript - jQuery 表单,存在检查

javascript - 使用 sapui5 生成的列表的 header

javascript - 区分服务器模型和客户端 View 模型的 Angular 方式

javascript - jQuery.post() 似乎由于某种原因被跳过

javascript - 使用 JS 或 JQuery 更改 DIV 中每个元素的 CSS 位置