所以我定義爲資源如下:
angular.module('questionService', ['ngResource'])
.factory('QuestionService', function($http, $resource) {
var QuestionService = $resource('/api/questions/:key', {}, {
query: {
method:'GET',
isArray:true,
},
save: {
method: 'POST',
}
});
return QuestionService
});
,後來我採取某種形式的輸入並執行以下
var newQ = {
txt: $scope.addTxt
};
QuestionService.save(newQ)
服務器通過重新發布對象的JSON並使用新的唯一ID設置位置標題來響應POST請求。問題在於Angular沒有保存將返回的JSON或位置標題返回到對象中,並且未使用來自服務器的ID設置以供將來操作。我試過了很多東西,例如:
transformResponse: function(data, headersGetter) {
locationHeader = headersGetter().location;
key = locationHeader.split('/').slice(-1)[0];
data.key = key;
return data;
}
但是,返回的數據項目似乎沒有得到使用。我錯過了什麼嗎?這似乎是用於與REST API進行交互的非常常見的用例。
謝謝!
謝謝!甚至沒有意識到這個語法是可用的。 – grivescorbett
有什麼辦法可以防止$ save覆蓋資源和響應?例如,我有一個用戶資源$ scope.user。如果我調用$ scope.user。$ save()並且服務器以「Success」響應,ng-resource會將$ scope.user設置爲單詞「Success」。有沒有辦法來防止這種情況?我的後端只是返回新用戶的ID,我想在成功回調中手動更新:$ scope.user.id = response.id,我不希望將整個用戶對象返回在迴應中。 – parliament