在angularjs中将错误消息从服务传递到控制器

时间:2016-06-18 07:22:26

标签: javascript angularjs http

Controller.js

var vm = this;
vm.admin = {};

vm.add = function () {
    API.addAdmin(token, vm.admin)
        .then(function (resp) {
            vm.hideForm = true;
            vm.showButton = true;
            Notify.green(resp);
        }, function (resp) {
            Notify.red(resp);
        });
};

API.js

function addAdmin(token, dataObj) {
        return Constant.getApiUrl()
            .then(function (url) {
                $http({
                    method: 'POST',
                    url: url + '/client/admin',
                    headers: {
                        'Token': token
                    },
                    data: dataObj
                }).then(handleResp);

                function handleResp(resp) {
                    var responseStatus = (resp.status >= 200 && resp.status < 300) ? 'good' : 'bad';
                    if (responseStatus === 'good') {
                        console.log("Success" + resp);
                        return resp;
                    } else {
                        console.log("Failed" + resp);
                        return resp;
                    }
                }
            })
    }
  1. 如果我在API中获得成功响应,那么我需要将其连接到我的控制器中的成功函数,如果我在我的API中收到错误消息,那么我需要它将它连接到我的控制器中的错误功能。我应该如何评估API的响应状态(成功或错误)。

  2. 我不想将successfn,errorfn从我的控制器传递给API(只有在没有其他选择的情况下)。

  3. 我需要从API到控制器获取响应数据,以便在Notify消息中显示它。

  4. 谢谢!

1 个答案:

答案 0 :(得分:0)

在服务中(在&#34中指定响应值; originalData &#34;):

angular.module('appname').service('myserviceName', function(yourExistingService){
          this.myFunction= function(originalData) {
         //for next line to work return promise from your addAdmin method.
          var promise =  yourExistingService.getResponseFromURL(originalData);
                           return promise;
             }                         
         }); 

在你的控制器中:

var promise = myserviceName.myFunction($scope.originalData);
              promise.$promise.then(function() {
                         console.log($scope.originalData);                                 
                     });

然后你可以检查你&#34; originalData &#34;并根据您的需要编写代码。有关详细信息,请查看此http://andyshora.com/promises-angularjs-explained-as-cartoon.html