我得到了一个控制器CounterpartyCtrl这是由两个视图使用。如何防止请求重复?
第一个视图包含一个选择器,它需要集合中的所有记录。因此,我获取所有对象并将其放入$ scope.counterparties。
app.controller('CounterpartyCtrl', [
'$scope', 'Counterparty', function($scope, Counterparty) {},
$scope.counterparties = {},
$scope.loadCounterparties = function() {
Counterparty.query(function(response) {});
$scope.counterparties = response;
},
$scope.loadCounterparties();
]);
第二个视图必须仅包含按组划分的交易对手。
$scope.customers
$scope.vendors
$scope.others
$scope.HRs
因此,使用相同的控制器我取他们像下面
app.controller('CounterpartyCtrl', [
'$scope', 'Counterparty', function($scope, Counterparty) {},
$scope.counterparties = {},
$scope.loadCounterparties = function() {
Counterparty.query(function(response) {});
$scope.counterparties = response;
$scope.customers = Counterparty.query({
group: 'Customer'
});
$scope.vendors = Counterparty.query({
group: 'Vendor'
});
$scope.others = Counterparty.query({
group: 'Other'
});
$scope.HRs = Counterparty.query({
group: 'HR'
});
},
$scope.loadCounterparties();
]);
正如你可以看到这里是请求的明显重复。在每一个观点上,我提出了同样的要求,因此这不是生产性的。我如何重构代码?
使用$ Q,并返回一个承诺。然后对对方ies.query的后续调用不会执行HTTP请求,而是返回最初获取的值。 – Jupo
@Jupo你能在答案中提供一个例子吗? –