Специальное действие $resource Заменяет мою переменную Scoped на ответ сервера
Я использую ресурс $ с пользовательским действием.
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 для ресурса обновит этот ресурс (на сервере), а затем вернет копию обновленного ресурса. Я согласен, что так работает AngularJS $resouce.$ Save. Но должно ли это действительно применяться к моим индивидуальным действиям?
1 ответ
Это один из обходных путей, о котором я знаю, который приводит к обновлению копии объекта, которую мы затем отбрасываем. Это самый изящный способ?
$scope.resetPassword = function()
{
angular.copy($scope.userBeingEdited).$resetPassword(function(value, responseHeaders)
{
alert('Password reset');
});
};