pagination.vue
2.06 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
<template>
<div class="pagination m-20-0">
<ul>
<li>
<a v-if="pageNo !=1" href="javascript:;" @click="goPage(1)">首页</a>
<span v-else>首页</span>
</li>
<li>
<a v-if="pageNo > 1" href="javascript:;" @click="goPage(pageNo - 1)">上一页</a>
<span v-else>上一页</span>
</li>
<li v-for="index in totalPages" v-show="totalPages<8">
<a v-bind:class="{ 'active': pageNo == index + 1 }" href="javascript:;" v-if="pageNo != index + 1" @click="goPage(index + 1)">{{index + 1}}</a>
<span v-bind:class="{ 'active': pageNo == index + 1 }" v-else>{{index + 1}}</span>
</li>
<li v-for="index in prevnum" v-show="totalPages>7">
<a v-bind:class="{ 'active': pageNo == index }" href="javascript:;" v-if="pageNo != index " @click="goPage(index )">{{index }}</a>
<span v-bind:class="{ 'active': pageNo == index }" v-else>{{index}}</span>
</li>
<li v-for="index in nextnum" v-show="totalPages>7">
<a v-bind:class="{ 'active': pageNo == index }" href="javascript:;" v-if="pageNo != index " @click="goPage(index )">{{index }}</a>
<span v-bind:class="{ 'active': pageNo == index }" v-else>{{index }}</span>
</li>
<li>
<a v-if="pageNo < totalPages" @click="goPage(pageNo + 1)" href="javascript:;">下一页</a>
<span v-else>下一页</span>
</li>
</ul>
</div>
</template>
<script>
module.exports = {
props: {
'pageNo': {
twoWay: true,
type: Number,
default: 1
},
'totalPages': {
twoWay: true,
type: Number,
default: 0
},
},
computed: {
prevnum: function() {
var arr = [];
var n = this.pageNo - 1;
if(n <= 0) {
return arr
}
while(n > 0) {
if(arr.length < 3) {
arr.unshift(n);
}
n -= 1;
}
return arr;
},
nextnum: function() {
var arr = [];
var n = this.pageNo;
for(var i = 0; i < 4; i++) {
if(n <= this.totalPages) {
arr.push(n)
n += 1;
}
}
return arr;
}
},
methods: {
goPage: function(num) {
this.pageNo = num;
this.$dispatch('page-change');
}
}
};
</script>