$ resource Пользовательское действие Заменяет мою облачную переменную с ответом сервера

Я использую ресурс $ с пользовательским действием.

myApp.factory('User', [ '$resource', function($resource)
{
 return $resource('/QuantumServer/users/:id.json',
 {
 id : '@id'
 },

 {
 resetPassword :
 {
 method : 'POST',
 url : '/QuantumServer/users/:id/resetPassword.json'
 }
 });
} ]);

Я не могу восстановить объекты User. Проблема заключается в том, что при вызове пользовательского действия значение моего объекта локального облачного объекта заменяется ответом сервера. Это проблема, потому что ответ сервера - { success: true }, что заставляет мой локальный объект потерять все его значения полей.

$scope.resetPassword = function()
{
 $scope.userBeingEdited.$resetPassword(
 {}, function(value, responseHeaders)
 {
 alert('Password reset');

 // The value of $scope.userBeingEdited has been replaced with the
 // server response - how to stop this from happening?
 });
};

Я знаю, что философия RESTful заявляет, что, например, POST для resouce будет обновлять этот ресурс (на сервере), а затем возвращать копию обновленного ресурса. Я утверждаю, что это то, как AngularJS $ resouce. $ Save works. Но действительно ли это относится к моим обычным действиям?

1 ответ

Это одно обходное решение, о котором я знаю, что приводит к обновлению копии объекта, которую мы затем отбрасываем. Это самый изящный способ?

$scope.resetPassword = function()
{
 angular.copy($scope.userBeingEdited).$resetPassword(function(value, responseHeaders)
 {
 alert('Password reset');
 });
};

licensed under cc by-sa 3.0 with attribution.