2016-09-23 1 views
0

プロセス: サービスでhttpGetメソッドを呼び出して4つのhttpget呼び出しを呼び出そうとしましたが、最初のhttpget呼び出しはエラーを返し、残りの呼び出しは成功メッセージを返します。例外を処理するために、angularjsの1つのサービスでhttp getコールのリストを作成できませんか?

問題:私は私のコントローラにはなく、コンソールエラーはTypeErrorてその誤差関数の応答を呼び出そう:誤差関数は関数ではありません

enter image description here

コード:

myController:

app.controller('myCtrl',["myService",function(myService){ 
    var id =10; 
    $scope.getTemp = function() { 
      myService.getTemplate(id, $scope.getTemplateResponse, $scope.ErrorResponse); 
    }; 
     $scope.getTemplateResponse= function (response) { 
       $scope.bodyTemplate = response.Value; 
     }; 
     $scope.ErrorResponse = function(error){ 
      window.location.href = "Error#?" + error; 
     } 
     $scope.getTemp(); 
}]); 

myServiceという:

app.service("myService", ["ajaxService", function (ajaxService) { 
     this.getTemplate= function (id, successFunction, errorFunction) { 
       ajaxService.Get("http://gettempaltes.com/api/id="+id, successFunction, errorFunction); 
     }; 
}]); 

ajaxService:

app.service("ajaxService", ["$http", function($http) { 
     this.Get= function (route, successFunction, errorFunction) { 
      $http.get(route).success(function (response, status) { 
       successFunction(response, status); 
      }).error(function(response) { 
       errorFunction(response); 
      }); 
     }; 
}]); 
+0

これは、行27:29を指していますか? – Aravind

答えて

0

あなたはそれを指す前に$のscope.ErrorResponseを定義します。このように

$scope.ErrorResponse = function(error) 
{ 
    window.location.href = "Error#?" + error; 
} 

$scope.getTemp = function() 
{ 
    myService.getTemplate(id, $scope.getTemplateResponse, $scope.ErrorResponse); 
}; 

成功/エラーの検証は、それらを使用する前に渡されました。私たちは同じくらい我々が望むようキューに入れることができます。このように

ServiceName.getUserDetail(Id).then(function (data) { 
    $scope.user = ServiceName.data.user; 
    $scope.detail = ServiceName.data.detail; 
}, function (error) { 
     $scope.error = error.Message; 
}); 

:コントローラで

getUserDetail: function (id) { 
    var deferred = $q.defer(); 

    var user = $http({ 
     url: 'api/user/GetByUserId', 
     method: "POST", 
     params: { 'userId': id } 
    }); 

    var userDetail = $http({ 
     url: 'api/user/GetUserDetail', 
     method: "GET", 
     params: { 'userId': id } 
    }); 

    let promises = { 
     info: user, 
     detail: userDetail 
    } 

    $q.all(promises).then(function (response) { 
     this.data.user = response.info.data; 
     this.data.detail = response.detail.data; 
     deferred.resolve(response); 
    }); 
    return deferred.promise; 
} 

:あなたが約束を使用している場合、このようなあなたのサービスを変更するには、この

app.service("ajaxService", ["$http", function($http) 
{ 
    this.Get= function (route, successFunction, errorFunction) 
    { 
    $http.get(route) 
     .success(function (response, status) 
     { 
     if(angular.isFunction(successFunction)) 
     { 
      successFunction(response, status); 
     } 
     }) 
     .error(function(response) 
     { 
     if(angular.isFunction(errorFunction)) 
     { 
      errorFunction(response); 
     } 
     }); 
    }; 
}]); 
+0

サービスでエラーが発生するのを防ぎますが、そのエラー関数をコントローラにコールしてエラーメッセージ – Sri

+0

@SriChatalaを表示する必要があります。それで、あなたは 'errorFunction'を送信する必要があります。 'myService.getCampaignEmailTemplate()'を呼び出すコードを追加できますか?私は 'errorFunction'が渡されていないと思っています – gmustudent

+0

私は間違ったメソッド名をmetioned、私は質問を修正しました – Sri

0

のように、それらのいずれかがエラーをスローすると、コントローラエラー関数が呼び出されます。

+0

ここに私は約束を使用していません。 1つの方法で複数の$ httpリクエストで$ qをどのように使用するのですか?ありがとうございました... – Sri

関連する問題