如何在转换中获取下一个状态参数
Ui-router: How to get next state params in transition
我使用的是ui-router 1.0.0.beta.3。如何在转换期间获得下一个状态的路由参数?
index.run.js
$transitions.onStart({ to: '**' }, verifyAuth);
function verifyAuth(trans) {
let nextState = trans.$to();
if (Auth.verify(nextState.authGroup) === -1) {
return $state.go('login', { nextState: nextState.name, nextParams: nextState.params}); // this doesn't work
}
}
我想存储它们,以便在身份验证成功后,我可以将用户重定向到他试图访问的状态+状态参数。
login.component.js
let nextState = this.$stateParams.nextState;
let nextParams = this.$stateParams.nextParams;
$state.go(nextState, nextParams);
你的问题的答案是Transition.params()
function verifyAuth(trans) {
let nextState = trans.to();
let nextParams = trans.params();
if (Auth.verify(nextState.authGroup) === -1) {
return $state.go('login', { nextState: nextState.name, nextParams: nextParams});
}
}
但是,我建议研究一下ui-router 1.0示例应用程序是如何执行身份验证检查和登录重定向的:
此钩子通过返回$state.target('login')
https://github.com/ui-router/sample-app-ng1/blob/master/app/global/requiresAuth.hook.js L15-L24
在登录状态下,确定"登录后返回的状态"。它使用Transition.redirectedFrom()
检查原始转换的目的地。
https://github.com/ui-router/sample-app-ng1/blob/master/app/main/app.states.js L44-L83
相关文章:
- 滚动到容器中的下一个元素-几乎到了
- 后焦点更改为IE 11中的地址栏,而不是转移到表单中的下一个控件
- 使用CSS或js,使用动态选择器选择任意li的下一个元素
- 使用ajax将数据从一个步骤发送到下一个步骤的3步表单
- AngularJS&JSON-从Previous&下一个对象
- 使用向下箭头键(与tab键一样)聚焦下一个输入
- 来自文档或下一个静态父级的事件委派
- angularjs移除焦点上的活动类并添加到下一个项目
- 禁用旋转木马中的下一个按钮和上一个按钮
- 当按下一个键时,请多次按下不同的键
- 正在加载下一个帖子
- 构建JS测试,警报窗口重复上一个Q,而不是问下一个Q
- 删除“;上一个“;以及“;下一个“;基于当前幻灯片
- 真正的下一个具有特定类的元素
- 如何在不使用主题或命令式操作的情况下管理状态 在一个简单的 RxJS 示例中
- 使悬停保持悬停状态,直到下一个链接
- 角度 UI 路由器 - 在没有参数的情况下从一个状态转换到同一状态失败
- 选择下一个列表组并更改数据状态
- 如何在转换中获取下一个状态参数
- ui路由器动态定义";下一个";运行时的状态