问题 AngularJs Resource中的可选url参数


我有这种资源: var Products = $resource('companies/:companyId/products') 问题是,我想通过网址获取所有公司的产品 companies/products,但使用资源而不提供companyId我得到了 companies//products。可能我可以使用另一个网址,就像我一样 /products,但这是否意味着我必须为同一件事拥有另一种资源?

在这个简单的例子中,我可以将网址更改为 companies/products/:companyId,但似乎是相当普遍的情况。


2463
2018-04-30 10:43


起源



答案:


是的,目前您需要定义另一个$资源。

但是如果你想要的话,你可以将$ resource的多个实例包装到一个服务中......

app.factory('mergedRes', function($resource) {
  var r1 = $resource('/companies/:companyId/products');
      r2 = $resource('/companies/products');

  r1.getAll = r2.query.bind(r2);

  return r1;
});

13
2018-04-30 12:10



如果你想链接3个不同的资源怎么样,那会是什么样子? - Aziz Alfoudari
我试过这个解决方案,但它仍然显示r1 /companies//products 即使 companyId 是空的。 - Aziz Alfoudari


答案:


是的,目前您需要定义另一个$资源。

但是如果你想要的话,你可以将$ resource的多个实例包装到一个服务中......

app.factory('mergedRes', function($resource) {
  var r1 = $resource('/companies/:companyId/products');
      r2 = $resource('/companies/products');

  r1.getAll = r2.query.bind(r2);

  return r1;
});

13
2018-04-30 12:10



如果你想链接3个不同的资源怎么样,那会是什么样子? - Aziz Alfoudari
我试过这个解决方案,但它仍然显示r1 /companies//products 即使 companyId 是空的。 - Aziz Alfoudari