2016-11-26 6 views
0

私が気に入ったら、APIからのライブデータに切り替えることができるサービスを設定しようとしています。 getData関数は、開始レコードとレコード数を定義するためにskip/takeパラメーターを使用します。ローカルのjsonファイルからのページングを有効にする

私のデータがJSONファイルに現在ある:私のサービスは現在、一度にすべてのJSONデータを引き出し

{ 
    "Data":[{ 
     "Id":"1462", 
     "Name":"Cynthia" 

    },{ 
     "Id":"1463", 
     "Name":"Bob" 
    },{ 
     ... 
    }], 
    "Total":71 
} 

var _getData = function (optionsData) { 
     return $http({ 
      method: 'GET', 
      url: 'data/packages.json' 
     }) 
     .then(function successCallback(response) { 
      return response; 
     }, 
      function errorCallback(response) { 
      return response; 
     }); 
    } 

私がページングロジック権利を記述する必要があることに私には思われますサービスに:

 .then(function successCallback(response) { 
      var records = response.data.Data; 
      var firstRecord = 0;//optionsData.skip; 
      var numberOfRecords = 1;//optionsData.take; 
      response.data.Data = records.slice(firstRecord, firstRecord + numberOfRecords); 
      return response; 
     }, 

これは原則的に正しいですか?

[UPDATE]コントローラ方法:

 var getPackageData = function (options){ 
     return dataService.getData(options.data).then(
      function successCallback(response) { 
       options.success(response.data.Data); 
       $scope.totalCount = response.data.Total; 
      }, 
      function errorCallback(response) { 
       // handle error 
      } 
     ); 
    }; 
+0

P.S.私は模擬データモジュールがあることを知っています。彼らはデモのために過労です。 – DaveC426913

+0

errorCallbackは、拒否された約束を約束した約束に変える**です。そして、いいえ、約束からの反復抽出は、サービスで実行する必要はありません。 '.then'メソッドは、必要な回数だけ使用できます。 – georgeawg

+0

errorCallbackが間違っていますか?どうやって? successCallback(レスポンス)とerrorCallback(レスポンス) – DaveC426913

答えて

0

私errorCallbackが間違っていますか?どうやって?

errorCallback満たさ約束に拒否約束を変換です。変換を避けるために

、どちらかthrow応答またはreturn $q.reject

var _getData = function (optionsData) { 
    return $http({ 
     method: 'GET', 
     url: 'data/packages.json' 
    }) 
    .then(function successCallback(response) { 
     return response; 
    }, 
     function errorCallback(response) { 
     //To avoid converting reject to success 
     //DON'T 
     //return response; 
     //INSTEAD 
     throw response; 
     //OR 
     //return $q.reject(response); 
    }); 
} 

他の一般的なエラーがいずれかthrowまたはreturnステートメントを含めることができないことです。関数がreturnステートメントを省略すると、関数はundefinedの値を返します。その場合、$qサービスを変換する約束を達成する約束を約束しますundefinedの値をもたらす。

関連する問題