首页 文章

AngularJS $位置路由器和GET PArams - 最佳实践?

提问于
浏览
2

我将AngularJSangular-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]);
}

有更好的解决方案吗?我知道有...但它是什么?

1 回答

  • 3

    也许我只是在 $location 上使用 url 方法,因为它会正确解释您的查询字符串参数?

    //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的各种值 .

相关问题