这是我的路线提供者:
.config(['$routeProvider', function($routeProvider) {
$routeProvider.
when('/', {templateUrl: '/partials/search.html'}).
when('/about', {templateUrl: '/partials/about.html'}).
when('/services', {templateUrl: '/partials/services.html'})
//otherwise({redirectTo: '/'});
;
}])
我在/partials/search.html上运行搜索。我希望搜索可以加入书签。所以我将此添加到我收到搜索的ajax响应的代码中:
$location.path(myGetQuery);
但是,这会触发routeProvider并且它不会加载任何片段并且视图保持为空。使用otherwise... redirect
,它将显示空白搜索片段/网址,我的搜索查询已消失。
我也试过这样的事情......
$routeProvider.
when('/', {templateUrl: '/partials/search.html'}).
when('/:pars', {templateUrl: '/partials/search.html'}).
when('/about', {templateUrl: '/partials/about.html'}).
when('/services', {templateUrl: '/partials/services.html'});
好吧,感谢/:pars
,$location.path(myGetQuery);
使用正确的url(带有查询)加载页面,但片段仍然重新加载,因为我在执行后执行此操作搜索的反应,我的结果消失了。
处理此问题的正确方法是什么?
答案 0 :(得分:2)
您可以使用$location.search
更改网址的查询字符串值。请参阅文档here。
基本上,在您的搜索完成后,您会执行以下操作,这会将网址更新为:...?q=foobar
。
$location.search({ q: 'foobar' });
在您的情况下,您可能希望将传递的对象带入ajax查询并将其传递给搜索。
当您输入路线时,您可以使用$location.search()
提取现有值(如果他们有书签的网址),然后根据这些值执行搜索。
<强>更新强>
根据评论,您还需要更新路线以包含reloadOnSearch: false
。