2014-03-31 17 views
2

我已經開始爲我的AngularJS項目使用Restangular,並且想要使用Restangular創建一個服務來進行REST調用。該服務將具有這樣的功能:Restangular - 如何在它上面創建一個API

getAll 
$scope.account = save($scope.account) 
$scope.account = update(account) 

現在因爲Restangular調用返回這將對被稱爲像當年()裏面的服務承諾,以獲得滿意的結果,我該如何返回抓取或者更新來自我的服務包裝?

我想創建一個包裝器API,以便在獲取記錄後可以有任何其他業務邏輯,然後從我的服務API返回結果。我可以直接在我的控制器中使用Restangular服務,但是我需要一個合適的服務層來從控制器調用,這會返回給我REST調用的結果,而不僅僅是一個承諾。

Jay

回答

1

您需要使用promise鏈接。

因此,在你的服務,你必須(注意,我們正在返回的承諾):

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 
    }); 
}; 
+0

謝謝。我的保存,更新和getList正在工作。我的刪除有一個雙重承諾鏈。你能讓我知道如何鏈接它嗎? this.remove = function(account){ return Restangular.one(「accounts」,account.id).get()。then(function(account){ account.remove()。then(function(result){ 返回結果; }),函數(錯誤){ //在出錯時執行業務邏輯 }; }); } –

+0

其實我再次鏈接了諾言,它的工作。非常感謝。 –

相關問題