我的服务
app.factory('PartnerServiceRestangular', ['Restangular', function(Restangular) {
return Restangular.service('partner');
}]);
app.factory('PartnerInvoiceServiceRestangular', ['PartnerServiceRestangular', function(PartnerServiceRestangular) {
return PartnerServiceRestangular.one('partner', partnerId).service('invoice');
}]);
我的控制器
app.controller('FinancialsController', [
'$scope',
'PartnerServiceRestangular',
'PartnerInvoiceServiceRestangular',
function($scope, PartnerServiceRestangular, PartnerInvoiceServiceRestangular) {
PartnerServiceRestangular.getList().then(function(partners) {
$scope.partners = partners;
});
$scope.partnerChange = function(partner) {
$scope.partner = partner;
};
var getInvoices = function(partnerId, startDate, stopDate) {
// STUCK HERE
PartnerInvoiceServiceRestangular.get({})
};
我要做的是允许PartnerInvoiceServiceRestangular
执行以下获取请求:
/partner/{partnerId}/invoice/
- 返回特定partnerId的所有发票/partner/{partnerId}/invoice/?startDate=2014-06-01&stopDate=2014-6-30
- 返回2个给定日期之间的所有发票/partner/{partnerId}/invoice/{invoiceId}
- 要退回特定发票我已经在视图中设置了ng-models设置partnerId
,startDate
,stopDate
答案 0 :(得分:2)
这样的事情应该有效。
app.factory('PartnerInvoiceServiceRestangular', ['PartnerServiceRestangular', function(PartnerServiceRestangular) {
return {
getService: function(partnerId) {
PartnerServiceRestangular.one('partner', partnerId).service('invoice');
}
}
}]);
var getInvoices = function(partnerId, startDate, stopDate) {
PartnerInvoiceServiceRestangular.getService(partnerId)
.getList({ startDate: startDate, stopDate: stopDate }).then(function(invoices) {
$scope.partner.invoices = invoices;
}
};
但是,我不是您工厂服务实施的粉丝。为什么不直接使用:
$scope.partnerChange = function(partner) {
$scope.partner = partner;
partner.getList('invoice', { startDate: startDate, stopDate: stopDate }).then(function(invoices) {
$scope.partner.invoices = invoices;
});
};
答案 1 :(得分:0)
快速回答。
让我们看看“解耦的Restangular服务”部分:https://github.com/mgonto/restangular#decoupled-restangular-service
我们也可以使用嵌套的RESTful资源:
var Cars = Restangular.service('cars', Restangular.one('users', 1));
Cars.getList() // GET to /users/1/cars
在你的情况下它会是这样的:
var partner = PartnerServiceRestangular.one(1);
var invoices = Restangular.service('invoice', partner);
但不确定您的PartnerInvoiceServiceRestangular
工厂设计得好。
希望这有帮助。