AngularJS UI-Router:获取带参数的状态的绝对URL

Kou*_*sha 58 angularjs angular-ui-router

我希望能够在不改变状态的情况下更改地址'URL,以防止重新渲染.从我的搜索,ui-router目前不提供这个,但从$location.pathanuglar做.

所以,当然,我想用来$state.get(stateName)获取状态的URL,这样我就不会手动输入URL.

我有两个问题:

  1. $state.get(stateName)仅返回相对路径.我怎样才能获得绝对路径?
  2. 它还返回状态的定义,参数未定义.如何获取带有参数的URL?

例如,如果我有一个名为user.home.viewwith 的状态user.home,我将我的状态定义为

'user': {
     abstract: true,
     url: '^/users/'
},
'user.home': {
     url: ''
},
'user.home.view': {
     url: ':id/'
}
Run Code Online (Sandbox Code Playgroud)

所以现在,$state.get(user.home.view).url回归:id/.我怎样才能获得完整的URL(即/users/5/)?

ada*_*amK 114

你应该用$state.href().

  1. 要获得绝对URL,您可以使用:

    $state.href('user.home.view', {}, {absolute: true});

  2. 要获取包含参数的URL,您需要将它们添加为第二个参数

  • 你能扭转这个吗?从href中获取状态? (16认同)

Jea*_* F. 94

关于什么 :

$state.href($state.current.name, $state.params, {absolute: true})
Run Code Online (Sandbox Code Playgroud)

  • 提供动态答案的upvote (2认同)
  • 这应该是正确答案,谢谢! (2认同)