我希望能够在不更改状态的情况下更改地址'URL,以防止重新渲染。在我的搜索中,ui-router
目前不提供此功能,但来自anuglar的$location.path
确实如此。
所以,当然,我想使用$state.get(stateName)
来获取状态的URL,这样我就不会手动输入URL。
我有两个问题:
$state.get(stateName)
仅返回相对路径。我怎样才能获得绝对路径?例如,如果我的状态名为user.home.view
且user.home
,我的状态定义为
'user': {
abstract: true,
url: '^/users/'
},
'user.home': {
url: ''
},
'user.home.view': {
url: ':id/'
}
现在,$state.get(user.home.view).url
返回:id/
。如何获取完整的网址(即/users/5/
)?
答案 0 :(得分:110)
您应该使用$state.href()
。
要获取绝对URL,您可以使用:
$state.href('user.home.view', {}, {absolute: true});
要获取包含参数的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
我得到了可能存在的任何/所有参数。