【问题标题】:ng-Grid Pagination not working - AngularJSng-Grid 分页不起作用 - AngularJS
【发布时间】:2015-08-05 14:37:22
【问题描述】:

HTML:

<div class="grid-style" data-ng-grid="groupGrid">
     </div>

Javascript:

appRoot.controller('GroupController', function ($scope, $location, $resource, $http) {

var groupResource = $resource('/api/group', {}, { update: { method: 'PUT' }, add: {      method: 'POST'} });
$scope.groupList = [];    

groupResource.query(function (data) {
    $scope.groupList.length = 0;
    angular.forEach(data, function (groupData) {
        $scope.groupList.push(groupData);
    });
});

$scope.totalServerItems = 0;

$scope.pagingOptions = {
    pageSizes: [4, 8, 12, 16],
    pageSize: 250,
    currentPage: 1
};
$scope.setPagingData = function (data, page, pageSize) {
    var pagedData = data.slice((page - 1) * pageSize, page * pageSize);
    $scope.groupList = pagedData;
    $scope.totalServerItems = data.length;
    $scope.currentPage = page;
    if (!$scope.$$phase) {
        $scope.$apply();
    }
};

$scope.getPagedDataAsync = function (pageSize, page, searchText) {
    setTimeout(function () {
        var data;
        if (searchText) {
            var ft = searchText.toLowerCase();
            $http.get('/api/group').success(function (largeLoad) {
                data = largeLoad.filter(function (item) {
                    return JSON.stringify(item).toLowerCase().indexOf(ft) != -1;
                });
                $scope.setPagingData(data, page, pageSize);
            });
        } else {
            $http.get('/api/group').success(function (largeLoad) {
                $scope.setPagingData(largeLoad, page, pageSize);
            });
        }
    }, 100);
};

$scope.getPagedDataAsync($scope.pagingOptions.pageSize,     $scope.pagingOptions.currentPage);

$scope.$watch('pagingOptions', function (newVal, oldVal) {
    if (newVal !== oldVal && newVal.currentPage !== oldVal.currentPage) {
        $scope.getPagedDataAsync($scope.pagingOptions.pageSize, $scope.pagingOptions.currentPage);
    }
}, true);

$scope.selectedGroups = [];

$scope.groupGrid = {
    data: 'groupList',
    multiSelect: false,
    selectedItems: $scope.selectedGroups,
    enableColumnResize: false,                        
    enablePaging: true,
    showFooter: true,
    totalServerItems: 'totalServerItems',
    pagingOptions: $scope.pagingOptions,
    columnDefs: [
        { field: 'groupName', displayName: 'Group Name', width: '25%' }
    ],
};
});

我的问题 - 分页不起作用,如 - 不显示当前页码。 - 当我更改页面大小(比如 4)时,网格中的项目数不会改变(仍然是 16 - 我实际拥有的项目总数)。 - 只有在单击下一页按钮两次后,网格中的项目数才会发生变化。

【问题讨论】:

    标签: javascript angularjs pagination ng-grid


    【解决方案1】:

    您的“pagingOptions.currentPage”输入是否最大无效?

    https://github.com/angular-ui/ng-grid/issues/598

    你只需要将 ng-grid 更新为最新的东西

    【讨论】:

    • 我不知道,我删除了那些页面。我离开了 ng-Grid,一位前同事向我推荐了 ng-Table。无论如何,谢谢。
    【解决方案2】:

    我已经搜索了很长时间在 ng-grid 中做一些分页,但我从来没有得到我想要的。然后我碰到了ng-table

    它似乎有我想要的,所以我建议作为 ng-grid 的替代品。

    【讨论】:

      【解决方案3】:

      要在 ng-grid 中获取当前页面,请将确切的 int 值传递给当前页面变量,因为我在代码中进行了如下更改。

      $scope.pagingOptions = {
          pageSizes: [4, 8, 12, 16],
          pageSize: 250,
          currentPage: parseInt(pageId,10);
      };
      

      pageId = 1 or 2 or 3 etc.. 随心所欲。

      【讨论】:

        【解决方案4】:

        在您的 js 文件中添加以下代码。

        var pageop=false;
                $scope.$watch('pagingOptions.pageSize', function (newVal, oldVal) {
                    if(pageop){
          $scope.getPagedDataAsync($scope.pagingOptions.pageSize,$scope.pagingOptions.currentPage);                 
        
                    }else{
                         pageop=true;
                     }
        
                }, true); 
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-09-04
          • 2015-02-20
          • 2016-09-09
          • 2017-09-30
          相关资源
          最近更新 更多