1

如果我有一个如下定义的简单资源,我的理解是我可以调用该Receipt.query()方法从服务器获取集合。我的理解也是,如果我调用Receipt.query({freightBill: 123}),那么 cargoBill 会被添加为查询参数,例如/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');
  });
4

2 回答 2

4

$resource 的第二个参数是默认参数。文档:链接

angular.module('webappApp')
  .factory('receipts', function ($http, $resource, $location) {
    return $resource('/distribution/inbound',{page:0,size:20,sort:'number,desc'});
  });

这些使它们成为“默认值”。这意味着您可以通过将新值传递给.querylike 来覆盖Receipt.query({freightBill: 123,size:20,page:2})

于 2014-05-23T12:28:45.240 回答
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);
  });
于 2014-05-23T12:24:42.953 回答