2016-01-16 2 views
2

я делаю это Customer обслуживания с $resource:ngResource: Пользовательский метод обновления очищает экземпляр

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

Когда я обновить customer (, который является Инстанцией Customer службы), и после обещания является разрешено, очищается 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

Когда я обновляю клиент (то есть Instance обслуживания клиентов), и после того, как обещание не будет решено, вар клиента очищается. Зачем?

Когда $update решает она очищает и обновляет $resource объект с новыми данными. Сервер возвращает пустые данные.

Если вы хотите обновить без очистки объекта, поместите обновленный объект во второй аргумент метода Customer.update.

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

Или измените ваш сервер, чтобы возвращать обновленную информацию.

0

Я создал простую службу с json-server (https://github.com/typicode/json-server) на основе JSON файла:

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

Я также копировать-вставить код (единственное изменение, которое я сделал, чтобы использовать 1 вместо $stateParams.id) и протестировал его с вышеуказанным сервисом и угловым ресурсом v1.4.8. Не было такой проблемы - оба консольных журнала отображали точно такой же результат. Может быть, проблема вызвана серверным кодом? Я не могу думать о какой-либо причине, почему это не сработает в Angular (кроме более старой версии углового ресурса).

Update

PUT Ваш метод на службе, должны не только обновить клиента на сервере, но и вернуть обновленный объект. Если это не так, ваш экземпляр $ scope.customer заменяется пустым объектом, который возвращается из службы.

 Смежные вопросы

  • Нет связанных вопросов^_^