簡體   English   中英

將錯誤消息從服務傳遞到angularjs中的控制器

[英]passing error message from service to controller in angularjs

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. 我不想從我的控制器向API傳遞successfn,errorfn(僅當沒有其他選擇時)。

  3. 我需要從API到控制器獲取響應數據,以將其顯示在Notify消息中。

謝謝!

在使用中(在“ originalData ”中分配響應值):

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);                                 
                     });

然后,您可以檢查您的“ originalData ”並根據需要編寫代碼。有關更多詳細信息,請查看此http://andyshora.com/promises-angularjs-explained-as-cartoon.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM