【发布时间】:2019-08-21 08:44:59
【问题描述】:
我正在开发一个 vue 项目,并尝试为表格实现分页。
出现错误,我无法弄清楚代码有什么问题。
我在一个简化的例子中重现了这个问题:https://codesandbox.io/s/rj23rqp2k4
问题是,当将设置更改为每页 10 个,然后再改回每页 5 个时,第二页上有 6 个项目,而不是 5 个。
HTML:
<template>
<div id="app">
<button @click="currentPage-=1">Previous</button>
<button @click="currentPage+=1">Next Page</button>
<select v-model="perPage">
<option value="5">5 per page</option>
<option value="10">10 per page</option>
</select>
<hr>
<ul v-for="item in pages.get(currentPage)" :key="item">
<li>
<strong>{{ item }}</strong>
</li>
</ul>
<hr>
<h5>Current Page: {{currentPage}}</h5>
</div>
</template>
脚本:
<script>
export default {
name: "App",
data() {
return {
data: ["a1","b2","c3","d4","e5","f6","g7","h8","i9","j10","k11"],
perPage: 5,
currentPage: 1
};
},
computed: {
numberOfPages: function() {
let x = this.data.length / this.perPage;
if (x % 1 !== 0) {
x = Math.floor(x) + 1;
}
return x;
},
pages: function() {
let pgs = new Map();
for (
let index = 0, start = 0, end = this.perPage;
index < this.numberOfPages;
index++
) {
pgs.set(index + 1, this.data.slice(start, end));
start += this.perPage;
end += this.perPage;
}
return pgs;
}
}
};
</script>
似乎错误必须在页面功能中,因为一页上有 6 个项目,并且不应该是这种情况。
【问题讨论】:
标签: javascript arrays vue.js