如何创建工厂$ resource或$ http服务来处理来自外部资源的具有多个任意参数的查询字符串? 例如
#/animals
#/animals?gender=m
#/animals?color=black
#/animals?size=small
#/animals?gender=m&color=black
#/animals?size=med&gender=f
#/animals?size=lg&gender=m&color=red
这个想法是有一些按钮/输入,用户可以按这些按钮/输入来添加到查询字符串中的当前参数列表,以获得具有不同组合的所需属性的新动物列表。 我已经尝试了以下但它没有根据需要重新加载或添加新参数到现有的URL。另外,我不确定是否应该在控制器或工厂中调用$ route.current.params,如果这是最好的方法。
angular.module(Animals, ['$resource', '$route', '$location', function($resource, $route, $location) {
return $resource('http://thezoo.com/animals', $route.current.params, { query: {method: 'GET', isArray: true}});
}]);
谢谢:)
答案 0 :(得分:10)
如果在调用资源时传入的参数与url中指定的任何占位符都不匹配,则它们会自动转换为查询字符串参数。所以你应该这样做:
angular.module(Animals, ['$resource', '$route', '$location', function($resource, $route, $location) {
return $resource('http://thezoo.com/animals', { query: {method: 'GET', isArray: true}});
}]);
然后当你尝试使用它时,你可以这样做:
Animals.query({size:"med",gender:'f'});
它将被翻译为:
http://thezoo.com/animals?size=med&gender=f