Специальное действие $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');
    });
};
Другие вопросы по тегам