我不知道如何从服务中访问错误消息。我正在使用WebAPI2和AngularJS。
控制器:
testApp.controller('ModalCtrl', ['$log', '$scope', '$modalInstance', '$rootScope', 'CrudService',
function ($log, $scope, $modalInstance, $rootScope, CrudService) {
$scope.updateItem = function (updateItem) {
CrudService.update(updateItem)
.success(...)
.error(function (data) { //doesn't work: CrudService.update(...) is undefined
$scope.dataError = data.ModelState
});
$scope.ok();
}
服务:
testApp.factory('CrudService', ['$log', 'resService',
function ($log, resService) {
return {
...
update: function (updateItem) {
updateItem.$update().then(function (response) {
//SUCCESS MESSAGE definieren
}, function (response) {
$log.info('Update ERR:', response.data.ModelState); //Here I'm getting the error messages
var dataError = [];
dataError = response.data.ModelState; //How can I use this in the Ctrl?
});
},
...
资源服务:
return {
name: $resource(baseUrl + '/api/name/:Id', {
Id: '@Id'
}, {
'update': {
method: 'PUT'
}
}),
我想在Ctrl中使用变量“dataError”作为$ scope。我怎么能这样做?
答案 0 :(得分:1)
return {
...
update: function (updateItem) {
return updateItem.$update();
},
$scope.updateItem = function (updateItem) {
CrudService.update(updateItem).then(
function(resp){
},
function(error){
$scope.dataError = error.data.ModelState;
}
);
}
<强>更新强>
Factory
(与服务不同)不会自动返回内容
你需要这样回来。 (或者返回你的函数,其中包含另一个返回)
testApp.factory('CrudService', ['$log', 'resService',
return {
...
update: function (updateItem) {
updateItem.$update().then(function (response) {
//SUCCESS MESSAGE definieren
}, function (response) {
$log.info('Update ERR:', response.data.ModelState); //Here I'm getting the error messages
var dataError = [];
dataError = response.data.ModelState; //How can I use this in the Ctrl?
});
},
...