【发布时间】:2017-04-17 11:23:39
【问题描述】:
我正在使用的应用程序有一个基本的 href
<base href="/xyz/">
并且状态配置看起来类似于
.state('state1', {
url: '/abc/:def/:ghi',
views: 'view1',
})
.state('state2', {
url:'/abc/:def/:ghi/jk/:123/:456',
views: 'view2',
})
并获取我正在执行的当前 URL
var browserUrl = $state.href($state.current.name, $state.params, { absolute: false });
这还给我
/xyz/abc/:def/:ghi
当我执行 $state.go 到 goto 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,知道如何通过更新位置来使其工作吗?
【问题讨论】:
-
为什么
browserUrl包含完整的browserUrl?您能否将browserUrl的输出添加到您的join()函数中? -
@lin 它有基本的href,因为我使用$state.href 来动态生成url
标签: javascript angularjs routing angular-ui-router