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

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

所以,我自然想用$state.get(stateName)来访问状态的URL,这样我就不会手动inputURL。

我有两个问题:

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

例如,如果我有一个名为user.home.viewuser.home状态,我有我的国家定义为

 'user': { abstract: true, url: '^/users/' }, 'user.home': { url: '' }, 'user.home.view': { url: ':id/' } 

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

你应该使用$state.href()

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

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

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

关于什么 :

 $state.href($state.current.name, $state.params, {absolute: true}) 

为了得到没有参数的绝对URL,我发现我需要通过inherit: false ,例如:

 $state.href('home', {}, {absolute: true, inherit: false}) 

没有inherit: false我得到任何/所有可能存在的参数。