Старе питання, але оскільки я думаю, що мій підхід дещо інший і менш складний, я поділюсь цим і сподіваюся, що хтось, окрім мене, вважає його корисним.
Те, що я вважав простим і малим рішенням сторінки, полягає в поєднанні директиви з фільтром, який використовує ті самі змінні області.
Щоб реалізувати це, ви додаєте фільтр до масиву і додаєте такий directiv, як цей
<div class="row">
<table class="table table-hover">
<thead>
<tr>
<th>Name</th>
<th>Price</th>
<th>Quantity</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="item in items | cust_pagination:p_Size:p_Step">
<td>{{item.Name}}</td>
<td>{{item.Price}}</td>
<td>{{item.Quantity}}</td>
</tr>
</tbody>
</table>
<div cust-pagination p-items="items" p-boundarylinks="true" p-size="p_Size" p-step="p_Step"></div>
</div>
p_Size і p_Step - це змінні області, які можна налаштувати у межах іншого значення, за замовчуванням значення p_Size становить 5, а p_Step - 1.
Коли крок зміни сторінки, оновлення p_Step оновлюється і запускає нове фільтрування за допомогою фільтра cust_pagination. Потім Filter_pagination Filter відрізає масив залежно від значення p_Step, як показано нижче, і повертає лише активні записи, вибрані в розділі сторінки
var startIndex = nStep * nPageSize;
var endIndex = startIndex + nPageSize;
var arr = items.slice(startIndex, endIndex);
return arr;
DEMO Переглянути повне рішення в цьому планку