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

时间:2014-07-01 03:28:32

标签: angularjs angular-ui-router

我希望能够在不更改状态的情况下更改地址'URL,以防止重新渲染。在我的搜索中,ui-router目前不提供此功能,但来自anuglar的$location.path确实如此。

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

我有两个问题:

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

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

    现在,$state.get(user.home.view).url返回:id/。如何获取完整的网址(即/users/5/)?

3 个答案:

答案 0 :(得分:110)

您应该使用$state.href()

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

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

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

答案 1 :(得分:93)

怎么样:

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

答案 2 :(得分:2)

要获取没有参数的绝对网址,我发现我需要传递inherit: false,例如:

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

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