如果我有一个如下定义的简单资源,我的理解是我可以调用Receipt.query()
方法从服务器获取一个集合。我的理解是,如果我拨打Receipt.query({freightBill: 123})
,则会将FreightBill添加为/distribution/inbound?freightBill=123
等查询参数。我怎么能以这种方式传递查询参数,但是从我的工厂那里,还为页面,大小和排序添加默认查询参数?
生成的请求可能看起来像/distribution/inbound?freightBill=123&page=0&size=20&sort=number,desc
angular.module('webappApp')
.factory('receipts', function ($http, $resource, $location) {
var search = $location.search();
var page = search.page||0;
var size = search.size||20;
var sort = search.sort||'number,desc';
return $resource('/distribution/inbound');
});
答案 0 :(得分:4)
$ resource的第二个参数是默认参数。 DOCS:Link
angular.module('webappApp')
.factory('receipts', function ($http, $resource, $location) {
return $resource('/distribution/inbound',{page:0,size:20,sort:'number,desc'});
});
这些使他们成为默认'。这意味着您可以通过将新值传递给.query
来覆盖
Receipt.query({freightBill: 123,size:20,page:2})
答案 1 :(得分:0)
要回答我自己的问题,实际上非常简单......只需将查询参数附加到资源路径即可。调用Receipt.query({freightBill: 123})
时,Angular会智能地将&freightBill=123
附加到路径的末尾。如果没有页面,大小和排序参数,Angular只会附加?freightBill=123
,因为它是唯一的参数。
angular.module('webappApp')
.factory('receipts', function ($http, $resource, $location) {
var search = $location.search();
var page = search.page||0;
var size = search.size||20;
var sort = search.sort||'number,desc';
return $resource('/distribution/inbound?page=' + page + '&size=' + size + '&sort=' + sort);
});