Имеем MongoDB и коллекцию в ней. Используется плагин mongoose-paginate для постраничной выборки.
Ответ приходит такого формата:
{
docs:Array[10], // массив документов с нужной страницы
limit:10, // количество элементов на странице
page:1, // номер страницы
pages:9, // количество страниц
total:88 // всего записей соответствующих критериям выборки
}
Для генерации кнопок написал такой фильтр:
/*global angular*/
// /src/js/filters/range.filter.js
(function () {
'use strict';
angular
.module('App')
.filter('range', range);
/**
* Фильтр Angular
*
* @constructor
* @name range
*
* @return {Function} Вернет фильтр для массива
*/
function range() {
/**
* Фильтр создает из входного массива input массив чисел длиной total
*
* @method
*
* @param {Array} input Пустой массив
* @param {Number} total Количество страниц
* @param {Number} current Текущая страница
* @param {Number} max Количество кнопок для показа
*
* @return {Array} Массив с числовыми элементами длиной max
*
* @example
* <li ng-repeat="num in [] | range:88:2:5">{{num}}</li>
* // создаст массив для вывода кнопок переключения страницы
*/
return function(input, total, current, max) {
console.log("total, current, max:", total, current, max);
var total = parseInt(total);
var current = parseInt(current);
var max = parseInt(max);
if(current > (total-max)){
current = current-max;
}
for (var i=current; i<=(current+max); i++) {
if(i <= total){
input.push(i);
}
}
return input;
};
}
//range.$inject = [];
})();
Привожу скрины того что вышло:
Че то не могу придумать логику генерации. Поможете?