我正在使用带有自定义操作的 $resource。
myApp.factory('User', [ '$resource', function($resource)
{
return $resource('/QuantumServer/users/:id.json',
{
id : '@id'
},
{
resetPassword :
{
method : 'POST',
url : '/QuantumServer/users/:id/resetPassword.json'
}
});
} ]);
我可以毫无问题地检索我的用户对象。问题是当我调用自定义操作时,我的本地范围用户对象的值被服务器响应替换。这是一个问题,因为服务器响应是{ 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 的工作原理。但它必须真的适用于我的自定义操作吗?