- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 angular v1.6.1 和 ui-router v1.0.6 onBefore TransitionHook。
我正在尝试验证用户是否将事件订阅设置为 true。该值是在用户对象上设置的。当他们登录并尝试点击任何路线时,我想检查以确保他们有有效的订阅,如果没有重新路由到计费模块,以便他们可以更新他们的付款方式。即使他们在应用程序中并尝试单击另一条路线,我希望他们重新路由到帐单,直到该案例得到满足。
发生的是 onBefore 钩子(Hook)只是迭代或被多次调用(x20)。
我一定是错过了什么或不理解。我有 onStart 钩子(Hook)可以正常工作。
//app.ts 运行
$trace.enable("TRANSITION");
$transitions.onBefore({ to: "private.**" }, (trans) => {
//trans.$to().data.authorization = true
//authService.isLoggedIn() method = true
//$sessionStorage.profile.hasActiveSubscription = false
if (trans.$to().data.authorization && authService.isLoggedIn() && !$sessionStorage.profile.hasActiveSubscription) {
return trans.router.stateService.target("private.location.billing");
}
return true;
});
$transitions.onStart({}, trans => {
if (trans.$to().data && trans.$to().data.authorization && !authService.isLoggedIn()) {
return trans.router.stateService.target("public.login");
}
return true;
});
.state("private.location.billing",
{
url: "/billing",
views: {
"tabContent": {
component: "billing",
data: { pageTitle: "Location Billing" }
}
},
ncyBreadcrumb: {
label: "Location Billing"
},
data: {
authorization: true
}
})
最佳答案
当您在 UI-Router 中重定向转换时,它会中止原始转换。然后它会开始新的过渡到您的目标状态。当新的转换运行时,你的钩子(Hook)会被第二次处理。
一种选择是将"private.location.billing"
列入白名单。状态在你的钩子(Hook)里。这将导致钩子(Hook)为任何 private.**
运行。州,private.location.billing
除外.
$transitions.onBefore({ to: "private.**" }, (trans) => {
const to = trans.to();
if (to.name !== "private.location.billing" && to.data.authorization && authService.isLoggedIn() && !$sessionStorage.profile.hasActiveSubscription) {
return trans.router.stateService.target("private.location.billing");
}
return true;
});
关于angularjs - 为什么使用 ui-router 转换 onBefore Hook 会多次迭代转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46157835/
我可以在 react-router 将我重定向到页面之前调用 Meteor 方法吗?我想为登录用户创建有关他/她的页面浏览量的历史记录。 我看到在 iron-router 中我可以使用 onBefor
我正在使用 angular ui 路由器版本 1.0.0-alpha.4 并且由于默认情况下根范围事件处于非事件状态,我想使用实现身份验证机制的新方法如下。 .run(['$transitions',
我正在使用 angular 组件和 ui-router 1.0.0-beta.3。 这个版本不发送与改变状态相关的事件,有钩子(Hook)。 在每次状态更改之前,我想重新验证用户是否已通过身份验证以及
我正在使用 angular v1.6.1 和 ui-router v1.0.6 onBefore TransitionHook。 我正在尝试验证用户是否将事件订阅设置为 true。该值是在用户对象上设
我正在使用 PHP 中的 cURL 实现,并利用 curl_multi_init() 和 curl_multi_exec() 并行执行批量请求。我已经这样做了一段时间,并且了解其中的一部分。 但是,请
我升级到 UI Router 1.0.0,从 .$on($stateChangeX 变成了 $transitions.onX( ( see $transitions here ). 我需要在导航到页面
正如标题所说 - 有什么方法可以从这里获取 from 和 to 的 url: $transitions.onBefore({}, function(t){ //here }); 最佳答案 有一
我是一名优秀的程序员,十分优秀!