2013-08-25 40 views
3

我有我的页面,该页面使用GET请求和JSON后端的一些搜索功能。带搜索参数的可收藏URL?

我想,如果我执行搜索,我得到一个网址在浏览器中,所有的参数,用户可以书签。

比方说,我的搜索是:

search?key=a 

我把这个代码搜索的成功回调,更新网址:

$location.path("/search?key=a"); 

但后来我的网址被更新为:

search#/search%3Fkey=a 

如果用户为此书签,当然不会运行搜索,它只会显示搜索页面带有空白输入字段。

我已经做了设置来显示搜索结果时,用户有正确的链接 - 我加入这个控制器:

if (location.search) { 
    $scope.callMyApi(location.search); 
} 

但是,当我使用的链接,我从AngularJS得到,像search#/search%3Fkey=a$location.search()是空的。

$location.path(),在另一方面,有我需要什么:

/search?key=a 

我可能分裂这一点,并获得搜索字符串,并将其传递给callMyApi。但感觉就像我错过了Angular的方式去做。

已经阅读DOC约$location和有关路由的一些文章,但还是不知道我必须做的。

回答

2

您需要的位置pathsearch方法结合起来。类似于

$location.path('/search').search({key:'a'}); 

您可以检查有关如何在developer guide中使用$ location的文档。

+0

嗯,是我写的,我读的文件已经,这个问题更像是这是做它的角/正确的方法是什么?此外,我有很多搜索参数,将不得不循环通过他们或什么...感觉有点混乱。 – Ixx

+0

我认为这是唯一的方法。您需要传递一个js对象,所以如果您有多个参数,请创建一个js对象并将其传递给搜索。 – Chandermani