Я работаю с угловыми ресурсами, пытаясь использовать угловую функцию сохранения $.
По умолчанию $save отправляет модель обратно на URL-адрес службы. Однако похоже, что он ожидает, что модель будет возвращена службе (моя модель будет пустой, если я этого не сделаю). Мне было интересно, как лучше всего возвращать сообщения и ошибки контроллеру.
Мое решение состояло в том, чтобы создать новый класс в моем PHP, который имеет массив ошибок, в котором хранятся любые ошибки, возникающие при обработке, и поле, в котором хранится модель для возврата. Затем он отправляется обратно и обрабатывается в функции обратного вызова:
$scope.ApplyChanges=function(){
console.log("saving...");
$scope.user.$save(function(data){
console.log(data);
if (data.errors.length>0){
for (error in data.errors){
$scope.alerts.push({type:'danger', msg: data.errors[error].msg});
}
$scope.user=User.get({id:data.data.UserName});
} else {
$scope.user=User.get({id:data.data.UserName});
$scope.alerts.push({type:'success', msg: "User data saved successfully"});
}
}, function(err){
$scope.alerts.push({type:'danger', msg: "There was a problem saving your data: " + err});
});
эти строки здесь: $scope.user=User.get({id:data.data.UserName});
Мне пришлось использовать, потому что, если бы я просто назначил свой $scope.user
на data.data
, пользователь больше не использовал службу, и я получил бы сообщение об ошибке, когда я попытался бы снова ApplyChanges
.
Итак, есть ли способ сделать это более безобидно? Так как я должен сделать дополнительный звонок, чтобы получить модель. Должен ли я отправлять ошибку, только если есть ошибка, а затем иметь дополнительный обратный вызов для получения модели? Есть ли способ лучше?