簡體   English   中英

如何使用ngrepeat和bootstrap ui使用angularjs創建分頁?

[英]How to create pagination with angularjs with ngrepeat and bootstrap ui?

創建分頁的最簡單方法是什么? 我想在項目列表中使用ng-repeat,每個項目都有id和name屬性。 下一個代碼可用於例如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>

有人可以幫我嗎? 非常感謝!

你可以在這里看看提琴手。 基本上,我創建了一個自定義過濾器,該過濾器將當前頁碼和頁面大小作為輸入,然后切出需要在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>

使用ui-bootstrap的分頁指令

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM