角度 UI 路由器 - 状态查询字符串参数不起作用
Angular UI Router - state query string parameter not working
我有一个与angular-ui-router演示应用程序非常相似的场景:每当用户尝试访问需要身份验证的状态时,都会有一个钩子将他重定向到登录状态。额外的要求是,有人可能希望通过带有附加查询字符串参数的 URL 访问状态:username
该参数应自动填充在登录页面的相应输入中。
我的状态结构是这样的:
- 有一个
shell
抽象状态,它是所有其他状态的父级,类似于演示应用程序中的app
状态 - 这个
shell
状态有url: '?username'
(如果我理解正确,这个参数应该被所有其他状态继承( - 我的
login
组件具有绑定username: '<'
login
州有这样resolve
username: $transition$ => $transition$.params().username
整个登录/重定向机制完美运行。唯一的问题是,在login
的状态resolve
中,即使我在浏览器中转到类似 http://mysite/#/somestate?username=foo
的链接,params().username
也是未定义的。
知道我做错了什么,或者我如何实现我所追求的吗?
谢谢!
我将回答我自己的问题:问题实际上出在登录重定向钩子上。在那里,我使用 state.target('login', params, {location: false})
重定向到登录状态,并且我从从未具有有效值的transition.router.stateService.params
获取params
。
只是尝试一下,我发现实际上transition.params()
给了我正确的参数值,所以我现在可以使用这些参数重定向并且它工作正常。
不过,我仍然有一个问题:理想情况下,我希望在登录后我重定向回最初请求的状态并从查询字符串中清除这些参数。有人知道这是否可能/支持吗?
相关文章:
- 从查询字符串参数推断出正确的数据类型
- 如何使用JQuery在HTML中创建包含字符串参数的引号的onclickjavascript链接
- 如何在 OnClick 函数中传递字符串参数
- 使用Angular Resource查询具有字符串参数的REST API
- 如何在JavaScript函数中将字符串参数传递给Java方法
- 为javascript函数提供可能包含特殊字符的字符串参数
- 使用查询字符串参数筛选数据
- 将查询字符串参数与谷歌地图api v3服务结合使用
- 从 URL - AngularJS 获取动态查询字符串参数
- 函数中的 Javascript 字符串参数
- 将服务字符串参数转换为数组的 Angular 内部
- 将字符串参数传递给 JavaScript 函数
- 无法通过 ajax 将字符串参数传递给 php 函数
- 使用基于查询字符串参数的 Angular 填充选择元素
- 从标记中的 href 获取查询字符串参数
- 从带有字符串参数的函数中的元素中获取值
- 将字符串参数传递给 javascript 函数 mvc
- 将查询字符串参数添加到 GridView 项模板
- 将字符串参数从 JS 视图传递到控制器
- 使用 RegEx 进行 JavaScript 字符串参数编码