2016-07-31 3 views
1

ng-tableを使用してサーバーサイドテーブルを実装しようとしています。しかし、getDataを使用しているときは、$defer.resolve is not a functionまたはparams is not definedのいずれかと表示されます。ngTable - サーバーサイドページネーションgetDataエラー

getData機能で$deferが使用されていない場合、私はparamsを得ることができます。

これは私のコードの一部です:

angular.module('ngTableTest', ['ui.router', 'ngTable']) 
.controller('Table', function($state, NgTableParams){ 
    var vm = this; 

    vm.niceTable = new NgTableParams({}, { 
     getData: function($defer, params) { 
     $http.get('/app/getdata') 
      .success(function(data) { 
       params.total(data.count); 
       $defer.resolve(data.data); 
      }); 
     } 
     }); 
}); 

ありがとうございました!

angular.module('ngTableTest', ['ui.router', 'ngTable']) 
.controller('Table', function($state, $q, NgTableParams){ 
    var vm = this; 

    vm.niceTable = new NgTableParams({}, { 

    getData: function(params) { 

     var promise = 
      $http.get('/app/getdata') 
      .success(function(data) { 
       params.total(data.count); 

       // here you can do some data manipulation 
       return $q.resolve(data); // this can be skipped if no data manipulation is required 
      }); 
      } 
     }); 
     return $q.resolve(promise); 
}); 

がNgTableの現在のバージョンに注意してください:あなたはhould

答えて

0

が延期$使用する$ Qを含ん 私は同じ問題に苦しんでいたこの

angular.module('ngTableTest', ['ui.router', 'ngTable']) 
.controller('Table', function($state, $q, NgTableParams){ 
    var vm = this; 

    vm.niceTable = new NgTableParams({}, { 
     getData: function(params) { 
     var deferred = $q.defer(); 
     $http.get('/app/getdata') 
      .success(function(data) { 
       params.total(data.count); 
       deferred.resolve(data.data); 
      }); 
     } 
     }); 
}); 
+0

これは 'params'エラーを修正しましたが、返されたデータはテーブルに表示されません。 – Bill

0

を試してみてください、ここに私のソリューションです。 、getdataには1つのパラメータしかなく、以前は2、$ deferおよびparamsだった。

見えるgetdataは解決済みの約束を返す必要があります。質問では、約束は成功の方法では解決されましたが、getdataメソッドでは直接解決されませんでした。

これは動作する解決策ですが、試行錯誤だけで解決策に達しました。私はいくつかの専門家が$ q.resolveの仕事とgetdata関数が値を返す方法についていくつかの光を当てたいと思います。

関連する問題