En primer lugar, su servidor debe devolver errores con relevante Códigos de estado de error HTTP (Ver códigos 4xx y 5xx). De esa manera, solo maneja errores en la devolución de llamada de error:
function onError (response){
switch (response.status) {
case 400:
case 404:
//etc...
response.data.errors.forEach(function(error){
$scope.alerts.push({type:'danger', msg: error.msg});
});
break;
case 500:
$scope.alerts.push({type:'danger', msg: "There was a problem saving your data: " + response.data});
break;
}
}
Dicho esto, si $ scope.user es un $ instancia de recursos, entonces no tiene que obtenerlo nuevamente desde el servidor, el método $ save () no cambiará el objeto.
Para copiar valores del objeto 'Usuario' recuperado del servidor al User $ scope. Simplemente use angular.extend ()
angular.extend($scope.user, data) //this updates $scope.user with data attributes.
Vale la pena señalar que angular.extend
no realiza una copia profunda, si es necesario, usa jQuery.extend:
jQuery.extend(true, $scope.user, data)