2

皆さん、

次の方法でサーバーからデータをフェッチするサービスを作成しました。

myApp.factory('CommonHttpService', function($http, $q){
var myUrl;

return{
    query: function(tableName){ 
    //Forming the URl
    myUrl = baseUrl + "?table=" + tableName;

    // Create a deferred object
    var deferred = $q.defer();

    //Calling web api to fetch all rows from table
    $http.get(myUrl).success(function(data){            
        deferred.resolve(data);
    }).error(function(){
        // Sending a friendly error message in case of failure
        deferred.reject("An Error occured while fetching items");
    });

    // Returning the promise object
    return deferred.promise;


}});

私のコントローラーは次のように呼び出します:

 // Get entire list
CommonHttpService.query(tableName).then(function(data) { 
   $scope.list = data;                            
}); 

したがって、私の質問は、この全体のスキームでは、エラーを処理する方法または場所がわかりません。エラーは deferred.reject().. で処理されますか?

または、コントローラーの .then() の後に処理されますか。

理想的には、「データが見つかりません」などのメッセージをユーザーに表示し、エラーの詳細を管理者などに送信する必要があります

以前にこれを行ったことがあり、少しのアドバイスがある人は、親切にそれらを伝えてください。

事前に感謝します。

4

1 に答える 1

0

次に、最初は成功、2 番目は失敗の 2 つの関数を期待します

 CommonHttpService.query(tableName).then(function(data) { 
       $scope.list = data;                            
    },function(error){
    alert("error")
    }); 

You should directly return $http.get which also returns a promise 
--Refactoring --- 
       myApp.factory('CommonHttpService', function($http, $q){
    var myUrl;
    return{
        query: function(tableName){ 

        myUrl = baseUrl + "?table=" + tableName;
        //$http.get also returns a promise 
        return $http.get(myUrl)

    }});

        CommonHttpService.query(tableName).then(function(data) { 
       $scope.list = data;                            
    },function(error){alert(error}); 
于 2013-07-23T14:10:31.473 に答える