我正在使用的应用有一个基础href
<base href="/xyz/">
并且状态配置看起来类似于
.state('state1', {
url: '/abc/:def/:ghi',
views: 'view1',
})
.state('state2', {
url:'/abc/:def/:ghi/jk/:123/:456',
views: 'view2',
})
并获取我正在做的当前网址
var browserUrl = $state.href($state.current.name, $state.params, { absolute: false });
这回报我
/xyz/abc/:def/:ghi
当我执行$ state.go来转到state2时我没有问题但是如果我使用$ location.path来更新URL,那么UI路由器无法匹配状态,因为基本href存在于newUrl。要更新我正在做的状态
var 123Id = 'item1'
var 456Id = 'item2'
var newUrl = [browserUrl, 'jk', 123Id, 456Id].join('/');
$location.path(newUrl)
这不起作用,因为browesrUrl包含基本href,任何想法如何通过更新位置使其工作?
答案 0 :(得分:1)
一个简单的解决方法是使用$location.url()
而不是$location.path()
。 url()
能够以这种方式处理绝对URL,您可以生成绝对URL,如:
var browserUrl = $state.href($state.current.name, $state.params, { absolute: true });
$location.url(browserUrl);