如何在AngularJS中从服务获取ErrorMessage?

时间:2015-07-06 10:43:15

标签: javascript angularjs asp.net-web-api angularjs-scope angularjs-service

我不知道如何从服务中访问错误消息。我正在使用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。我怎么能这样做?

1 个答案:

答案 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?
          });
       },
    ...