【发布时间】:2014-03-14 12:51:06
【问题描述】:
我将AngularJS 与angular-ui-router 组件一起用于我的单页网站。
如果我想切换到另一个视图 (path) 并添加参数,我可以像这样组合使用 $location.path() 和 $location.search():
$location.path('/foo/bar/').search('q','foobar');
现在我还需要生成 URL(即填充我网站上的链接或提供深层链接-直接链接)。所以我有一个服务可以根据用户输入和状态参数生成和提供 URL。
通常我会让服务提供类似/foo/bar/?q=foobar 的东西,但是每次我想用 $location 设置这样的链接时,我都必须使用字符串操作来去除 GET 参数,调用原始路径并添加.search() 中的其余部分。
var url = '/foo/bar/?q=foobar'
var tmpUrlParams = url.split('?')[1].split('&');
$location.path('url.split('?')[1]');
for (var i=0;i <= tmpUrlParams.length; i++){
$location.search(tmpUrlParams[i].split('=')[0], tmpUrlParams[i].split('=')[1]);
}
有没有更好的解决方案?嗯,我知道有……但它是什么?
【问题讨论】:
-
如果您的服务提供具有多个属性的对象 - fullUrl、baseUrl 和 searchParameters - 这样您可以使用 fullUrl 属性来创建深层链接,但您可以使用 baseUrl 和 searchParameters当您需要手动切换到另一个视图时
-
@JoseM 听起来不错。不是我正在寻找的既定最佳实践,但绝对是一个好主意。谢谢。
标签: angularjs angular-ui-router