VueJs comment faire de la pagination avec limiteur et de la plage..?
J'ai un code comme ceci :
JS:
var demoList = new Vue({
el: '#demoList',
data: {
items: [{
"id": 1,
"name": "Tom"
}, {
"id": 2,
"name": "Kate"
}, {
"id": 3,
"name": "Jack"
}, {
"id": 4,
"name": "Jill"
}, {
"id": 5,
"name": "aa"
}, {
"id": 6,
"name": "bb"
}, {
"id": 7,
"name": "cc"
}, {
"id": 8,
"name": "dd"
}, {
"id": 1,
"name": "Tom"
}, {
"id": 2,
"name": "Kate"
}, {
"id": 3,
"name": "Jack"
}, {
"id": 4,
"name": "Jill"
}, {
"id": 5,
"name": "aa"
}, {
"id": 6,
"name": "bb"
}, {
"id": 7,
"name": "cc"
}, {
"id": 8,
"name": "dd"
}, ],
loading: false,
order: 1,
searchText: null,
ccn: null,
currentPage: 0,
itemsPerPage: 2,
resultCount: 0
},
computed: {
totalPages: function() {
console.log(Math.ceil(this.resultCount / this.itemsPerPage) + "totalPages");
return Math.ceil(this.resultCount / this.itemsPerPage);
}
},
methods: {
setPage: function(pageNumber) {
this.currentPage = pageNumber;
console.log(pageNumber);
}
},
filters: {
paginate: function(list) {
this.resultCount = this.items.length;
console.log(this.resultCount + " Result count");
console.log(this.currentPage + " current page");
console.log(this.itemsPerPage + " items per page");
console.log(this.totalPages + " Total pages 2");
if (this.currentPage >= this.totalPages) {
this.currentPage = Math.max(0, this.totalPages - 1);
}
var index = this.currentPage * this.itemsPerPage;
console.log(index + " index");
console.log(this.items.slice(index, index + this.itemsPerPage));
return this.items.slice(index, index + this.itemsPerPage);
}
}
});
CSS:
a {
color: #999;
}
.current {
color: red;
}
ul {
padding: 0;
list-style-type: none;
}
li {
display: inline;
margin: 5px 5px;
}
HTML:
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/1.0.16/vue.js"></script>
<div id="demoList">
<div class="containerTable">
<table class="table">
<thead>
<tr class="header">
<th>
<div><a @click="sortvia('provider_name')">Provider</a>
</div>
</th>
</tr>
</thead>
<tbody>
<tr v-for="item in items | paginate">
<td>{{item.name}}</td>
</tr>
</tbody>
</table>
</div>
<ul>
<li v-for="pageNumber in totalPages">
<a href="#" @click="setPage(pageNumber)">{{ pageNumber+1 }}</a>
</li>
</ul>
</div>
Im coincé à essayer de créer un pager avec vuejs, j'ai donc été me demande si quelqu'un peut nommer un exemple de comment faire un pager comme cela si est possible "1-2-3-4-5 ... 55" ??, merci encore pour toute aide.
- Pouvez-vous expliquer plus en détails ce que votre sortie désirée est?
- Je veux dans la pagination nombre comme cette "1-2-3-4-5 ... la dernière" ne sont pas tous 1-2-3-4-5-6 -7-8
- vous pourriez faire un ngif="$index - page < 5"
Vous devez vous connecter pour publier un commentaire.
Découvrez ce code:
https://jsfiddle.net/os7hp1cy/48/
html:
css:
Fondamentalement, il ne montre que la pagination est dans les 2 pages de la page en cours. Ensuite, il sera également afficher la page 1 et la dernière page, et mettra
"..."
avant ou après le numéro à l'aide des CSS. Donc, si vous êtes à la page 10, il va montrer:1... 8 9 10 11 12 ...21
J'ai fourche @Jeff code et de faire une version de travail pour Vue 2 à cause de ce filtre migration https://vuejs.org/v2/guide/migration.html#Filters-Outside-Text-Interpolations-removed.
paginer méthode est déplacé vers calculés:
AVERTISSEMENT: je n'ai pas d'appliquer le filtre de texte, juste la pagination de la première.
https://jsfiddle.net/c1ghkw2p/