我已经开始将Restangular用于我的AngularJS项目,并希望使用Restangular创建一个服务来进行REST调用。该服务将具有以下功能:
getAll
$scope.account = save($scope.account)
$scope.account = update(account)
现在,由于Restangular调用返回服务中的一个promise,它必须像then()一样调用才能获得结果,如何从服务包装器返回获取或更新的结果?
我想创建一个包装器API,以便在获取记录之后我可以拥有任何其他业务逻辑,然后从我的服务API返回结果。我可以直接在我的控制器中使用Restangular服务,但是我需要从控制器调用一个适当的服务层,它将返回REST调用的结果,而不仅仅是一个承诺。
杰
答案 0 :(得分:1)
您需要使用承诺链。
所以在你的服务中你会有(注意我们正在回复承诺):
this.save = function(newAccount) {
..... // Do business logic on account before submit
return restangular.all('accounts').post(newAccount).then(function(result){
...... // Do business logic after successful save
return newAccount;
}, function(error){
...... // Do business logic on error
});
};
然后在你的控制器内:
$scope.saveAccount = function(newAccount) {
service.save(newAccount).then(function(savedAccount){
$scope.account = savedAccount;
}, function(errror) {
..... // Error handling
});
};