【问题标题】:Angular UI Router - state query string parameter not workingAngular UI Router - 状态查询字符串参数不起作用
【发布时间】:2016-11-14 17:26:39
【问题描述】:

我有一个与 angular-ui-router 演示应用程序非常相似的场景:每当用户尝试访问需要身份验证的状态时,都会有一个钩子将他重定向到登录状态。额外的要求是有人可能希望通过带有额外查询字符串参数的 URL 访问状态:username,该参数应自动​​填充到登录页面的相应输入中。

我的状态结构是这样的:

  • 有一个 shell 抽象状态,它是所有其他状态的父状态,类似于演示应用中的 app 状态
  • 这个shell状态有url: '?username'(如果我理解正确的话,这个参数应该被所有其他状态继承)
  • 我的login 组件有一个绑定username: '<'
  • login 状态有一个resolve,就像username: $transition$ => $transition$.params().username

整个登录/重定向机制完美运行。唯一的问题是在login 的状态resolveparams().username 是未定义的,即使在浏览器中我转到http://mysite/#/somestate?username=foo 之类的链接。

知道我做错了什么或如何实现我所追求的吗?

谢谢!

【问题讨论】:

    标签: javascript angularjs angular-ui-router


    【解决方案1】:

    我要回答我自己的问题:问题实际上出在登录重定向挂钩上。在那里,我使用state.target('login', params, {location: false}) 重定向到登录状态,并且我从transition.router.stateService.params 获得了params,它从来没有有效值。

    只是尝试了一些东西,我发现实际上transition.params() 给了我正确的参数值,所以我现在可以使用这些参数进行重定向并且它工作正常。

    我仍然有一个问题:理想情况下,我希望在登录后重定向回最初请求的状态并从查询字符串中清除这些参数。任何人都知道这是否可能/支持?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-30
      • 2014-01-19
      • 2017-07-06
      • 2016-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-18
      相关资源
      最近更新 更多