【问题标题】:ngTable - Server side pagination getData errorngTable - 服务器端分页 getData 错误
【发布时间】:2017-03-23 06:52:35
【问题描述】:

我正在尝试使用 ng-table 实现服务器端表。但是当我使用getData 时,它会说$defer.resolve is not a function 或params is not defined。

如果$defer 没有在getData 函数中使用,我可以获得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);
            });
        }
      });
});

谢谢!

【问题讨论】:

    标签: javascript angularjs ngtable


    【解决方案1】:

    你应该包含 $q 以使用 $defer 试试这个

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

    【讨论】:

    • 嗯,修复了params 错误,但它没有在表中显示返回的数据。
    【解决方案2】:

    我遇到了同样的问题,这是我的解决方案:

    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 中,getdata 只有一个参数,只有 params,之前是两个,$defer 和 params。

    似乎 getdata 需要返回一个已解决的承诺。在这个问题中,promise 是在 success 方法中解决的,而不是直接在 getdata 方法中解决的。

    无论如何,这是一个可行的解决方案,但只有通过反复试验才能找到解决方案。我希望一些专家对 $q.resolve 的工作原理和 getdata 函数的返回值有所了解。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-21
      • 2018-03-13
      • 2016-05-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多