Estoy tratando de agregar páginas a mi lista. Seguí el tutorial de AngularJS, el de los teléfonos inteligentes y estoy tratando de mostrar solo cierto número de objetos. Aquí está mi archivo html:
<div class='container-fluid'>
<div class='row-fluid'>
<div class='span2'>
Search: <input ng-model='searchBar'>
Sort by:
<select ng-model='orderProp'>
<option value='name'>Alphabetical</option>
<option value='age'>Newest</option>
</select>
You selected the phones to be ordered by: {{orderProp}}
</div>
<div class='span10'>
<select ng-model='limit'>
<option value='5'>Show 5 per page</option>
<option value='10'>Show 10 per page</option>
<option value='15'>Show 15 per page</option>
<option value='20'>Show 20 per page</option>
</select>
<ul class='phones'>
<li class='thumbnail' ng-repeat='phone in phones | filter:searchBar | orderBy:orderProp | limitTo:limit'>
<a href='#/phones/{{phone.id}}' class='thumb'><img ng-src='{{phone.imageUrl}}'></a>
<a href='#/phones/{{phone.id}}'>{{phone.name}}</a>
<p>{{phone.snippet}}</p>
</li>
</ul>
</div>
</div>
</div>
Agregué una etiqueta de selección con algunos valores para limitar la cantidad de elementos que se mostrarán. Lo que quiero ahora es agregar la paginación para mostrar los próximos 5, 10, etc.
Tengo un controlador que funciona con esto:
function PhoneListCtrl($scope, Phone){
$scope.phones = Phone.query();
$scope.orderProp = 'age';
$scope.limit = 5;
}
Y también tengo un módulo para recuperar los datos de los archivos json.
angular.module('phonecatServices', ['ngResource']).
factory('Phone', function($resource){
return $resource('phones/:phoneId.json', {}, {
query: {method: 'GET', params:{phoneId:'phones'}, isArray:true}
});
});
javascript
angularjs
paginate
Tomarto
fuente
fuente
Respuestas:
Si no tiene demasiados datos, definitivamente puede hacer paginación simplemente almacenando todos los datos en el navegador y filtrando lo que es visible en un momento determinado.
Aquí hay un ejemplo de paginación simple: http://jsfiddle.net/2ZzZB/56/
Ese ejemplo estaba en la lista de violines en el wiki angular.js github, que debería ser útil: https://github.com/angular/angular.js/wiki/JsFiddle-Examples
EDITAR: http://jsfiddle.net/2ZzZB/16/ a http://jsfiddle.net/2ZzZB/56/ (no mostrará "1 / 4.5" si hay 45 resultados)
fuente
if (input?)
condición antes de regresarinput.slice(start)
, gracias Andy!Acabo de hacer un JSFiddle que muestra la paginación + búsqueda + orden en cada columna usando el código de Build con Twitter Bootstrap : http://jsfiddle.net/SAWsA/11/
fuente
He creado un módulo que hace que la paginación en memoria sea increíblemente simple.
Le permite paginar simplemente reemplazando
ng-repeat
condir-paginate
, especificando los elementos por página como un filtro canalizado, y luego soltando los controles donde desee en forma de una sola directiva,<dir-pagination-controls>
Para tomar el ejemplo original pedido por Tomarto, se vería así:
No hay necesidad de ningún código de paginación especial en su controlador. Todo es manejado internamente por el módulo.
Demostración: http://plnkr.co/edit/Wtkv71LIqUR4OhzhgpqL?p=preview
Fuente: dirPagination de GitHub
fuente
Sé que este hilo es antiguo ahora, pero lo estoy respondiendo para mantener las cosas un poco actualizadas.
Con Angular 1.4 y superior, puede usar directamente limitTo filter que, además de aceptar el
limit
parámetro, también acepta unbegin
parámetro.Uso:
{{ limitTo_expression | limitTo : limit : begin}}
Por lo tanto, es posible que ahora no necesite usar ninguna biblioteca de terceros para lograr algo como la paginación. He creado un violín para ilustrar lo mismo.
fuente
Echa un vistazo a esta directiva: https://github.com/samu/angular-table
Automatiza mucho la clasificación y la paginación y le brinda la libertad suficiente para personalizar su tabla / lista como lo desee.
fuente
$index
y mi matriz no contiene valores incrementales<td at-sortable at-attribute="index">{{sortedAndPaginatedList.indexOf(item) + 1}}</td>
pero no sé si es la forma correctaAquí hay un código de demostración donde hay paginación + Filtrado con AngularJS:
https://codepen.io/lamjaguar/pen/yOrVym
JS:
HTML:
fuente