如何创建分页与 angularjs 与 ngrepeat 和 bootstrap ui 吗?

发布时间: 2017/4/16 1:26:06
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

创建分页的贱方式是什么? 我有 liket 使用 ng-repeat 在哪里我去通过项目列表和每个项目都有 id 和名称的属性。下一步作品例如 15 项的代码和显示 2 页但我想要显示的第一页的第 10 项和其他页显示其他项目......,等等,如果我有很多项目。

我我试过的代码︰

<table>
    <thead><th>id</th><th>name</th></thead>
    <tbody><tr ng-repeat="item in items">
        <td>{{item.id}}</td>
        <td>{{item.name}}</td>
    </tr></tbody>
</table>
<uib-pagination total-items="totalItems" ng-model="currentPage" max-size="maxSize" class="pagination-sm" boundary-links="true" force-ellipses="true"></uib-pagination>
<script>
$scope.items = [] //here i have for example 15 items..it comes through rest
totalItems = $scope.items.length; //15
$scope.currentPage=1;//1. page
$scope.maxSize=4; //maximum 4 page show
</script>

有人能帮助我吗?多谢!

解决方法 1:

你可以看看提琴手在这里。基本上,我创建了自定义的筛选器将当前页码和页大小作为输入,然后切片出需要在 UI 中显示的项。

筛选器

myApp.filter('paginate', function() {
  return function(items, page, pageSize) {
    if (items === undefined || items === null)
      return [];
    if (pageSize === undefined || pageSize === null || pageSize < 0 || pageSize >= items.length)
      return items;
    var filtered = [];
    page = page - 1;
    console.log(page * pageSize + " " + parseInt((page * pageSize) + pageSize));
    filtered = items.slice(page * pageSize, parseInt((page * pageSize) + pageSize));
    return filtered;
  }
});

HTML

<div ng-controller="MyCtrl">
  <div ng-repeat="item in items | paginate: currentPage : pageSize">
    {{item}}
  </div>
  <input type="number" ng-model="currentPage" />
</div>
赞助商