2016-01-16 117 views
2

我做這個Customer服務與$resourcengResource:自定義更新的方法清除實例

.factory('Customer', function($resource, apiURL){ 
    return $resource(apiURL+'customers/:id', { id: '@id' }, { 
     'update': {method: 'PUT'} 
    }) 
}) 

當我更新customerCustomer服務的實例),以及承諾後是解決了,customer var被清理。爲什麼?

$scope.customer = Customer.get({id: $stateParams.id}, function(){ 
    console.log($scope.customer) // Object {id: 1, name: 'John Doe', ...} 
    $scope.customer.$update() 
     .then(function() { 
      console.log($scope.customer) // Object { status: true, $promise: Object, $resolved: true } 
     }) 
}); 

回答

1

當我更新客戶(也就是客戶服務的一個實例),並承諾解決後,客戶VAR清洗。爲什麼?

$update解決它清除並更新新數據$resource對象。您的服務器正在返回空數據。

如果要在不清除對象的情況下進行更新,請將更新後的對象放在Customer.update方法的第二個參數中。

Customer.update({id: $stateParams.id}, $scope.customer); 

或修改您的服務器以返回更新的信息。

0

我創建了一個簡單的服務與基於JSON文件json-serverhttps://github.com/typicode/json-server):

{ 
    "customers": [ 
    { 
     "id": 1, 
     "name": "John Doe", 
     "age": 25 
    } 
    ] 
} 

我也複製粘貼你的代碼(我做的唯一的變化是使用1代替$stateParams.id)並使用上述服務和角色資源v1.4.8對其進行測試。沒有這樣的問題 - 兩個控制檯日誌顯示完全相同的輸出。也許這個問題是由服務器端代碼引起的?我想不出爲什麼這在Angular中不起作用(除了舊版本的角度資源)。

更新

PUT上的服務方法不僅要更新服務器上的客戶,而且還返回更新的對象。如果沒有,您的$ scope.customer將被替換爲從服務返回的空對象。

相關問題