我将AngularJS与angular-ui-router组件一起用于我的单页网站。
如果我想切换到另一个视图(路径)并添加参数,我可以像这样组合使用$location.path()和$ location.search():
$location.path('/foo/bar/').search('q','foobar');
现在我还需要生成Urls(即填充我网站上的链接或提供深层链接 - 这里直接链接)。所以我有一个服务,根据用户输入和状态参数生成并提供Urls。
通常我会让服务提供/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]);
}
有更好的解决方案吗?我知道有...但是它是什么?
答案 0 :(得分:3)
也许我误解了您的问题,但为什么不能在url
上使用$location
方法,因为它会正确解释您的查询字符串参数?
//Calling $location.url()
$location.url('/somepath?foo=bar');
//Will result in these values
$location.url(); // '/somepath?foo=bar'
$location.path(); // '/somepath'
$location.search(); // '{"foo":"bar"}'
以下是您可以使用的interactive jsFiddle,可以自己查看$location
api的各种值。