Angularjs 如何创建Angular.js$resource/$http工厂服务来处理来自外部资源的具有多个参数的查询字符串?

Angularjs 如何创建Angular.js$resource/$http工厂服务来处理来自外部资源的具有多个参数的查询字符串?,angularjs,angularjs-service,Angularjs,Angularjs Service,如何创建工厂$resource或$http服务来处理来自外部资源的具有多个任意参数的查询字符串? 例如 其思想是,用户可以按下按钮/输入,将其添加到查询字符串中的当前参数列表中,以获得具有不同组合中所需属性的动物的新列表。 我尝试了以下方法,但没有按照需要重新加载或向现有url添加新参数。另外,我不确定是否应该在控制器或工厂中调用$route.current.params,以及这是否是最好的方法 angular.module(Animals, ['$resource', '$route', '$

如何创建工厂$resource或$http服务来处理来自外部资源的具有多个任意参数的查询字符串? 例如

其思想是,用户可以按下按钮/输入,将其添加到查询字符串中的当前参数列表中,以获得具有不同组合中所需属性的动物的新列表。 我尝试了以下方法,但没有按照需要重新加载或向现有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}});
}]);

谢谢:)

如果调用资源时传入的参数与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

谢谢你-我相信这将工作得很好!当然,这看起来很明显,你已经展示了如何。我发布了一个后续问题:我认为
{size=“med”,gender='f'}
是错误的<代码>{size:“med”,gender:“f”}是正确的格式,不是吗??。这里不缺少一个参数吗?我认为应该是
return$resource('http://thezoo.com/animals“,{},{query:{method:'GET',isArray:true})(注意额外的空对象)
http://thezoo.com/animals?size=med&gender=f