AngularJS UI-Router:使用参数获取状态的绝对URL
我希望能够在不改变状态的情况下更改地址的URL,以防止重新渲染。 从我的search,目前ui-router
不提供这个,但anuglar $location.path
。
所以,我自然想用$state.get(stateName)
来访问状态的URL,这样我就不会手动inputURL。
我有两个问题:
-
$state.get(stateName)
只返回相对path。 我怎样才能获得绝对path? - 它还返回状态的定义,参数未定义。 如何获取带有参数的URL?
例如,如果我有一个名为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/
。 我怎样才能得到完整的url(即/users/5/
)?
你应该使用$state.href()
。
-
要获得绝对URL,您可以使用:
$state.href('user.home.view', {}, {absolute: true});
-
要获取带有参数的URL,您需要将它们添加为第二个参数
关于什么 :
$state.href($state.current.name, $state.params, {absolute: true})
为了得到没有参数的绝对URL,我发现我需要通过inherit: false
,例如:
$state.href('home', {}, {absolute: true, inherit: false})
没有inherit: false
我得到任何/所有可能存在的参数。