2016-01-16 104 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将被替换为从服务返回的空对象。

相关问题