参考:https://stackoverflow.com/questions/64604714/vue-pagination-how-to-use-it/67154639#67154639
element-ui : https://element.eleme.cn/#/zh-CN/component/pagination
vuejs 是一个前端,所以这决定了它的分页跟Rails不同,没那么简单。
所以我们需要:
1. 选择一个前端框架
2. 找到它的分页组件, 使用之。
3. 根据前端的分页组件,研究并实现后端分页代码。
代码:
在vuejs 中:
注意下面的 @current-change
<div class="block" style='float: right'>
<el-pagination
background
layout="prev, pager, next"
:total="general_statistics_total_count"
:page-size='100'
@current-change='handleCurrentChange'
>
</el-pagination>
</div>
然后,在script中:(注意其中的 select ... limit ... offset ...)
data中:
general_statistics_total_count : 0;
offset: 0 // 这个用来标记当前页面的页数的offset , 用于后续的更新页面(例如 update, delete等操作)
methods 中:
init(){
// 获得顶部下拉单
this.get_statistics_categories()
this.load_table_data(this.offset)
},
load_table_data(offset = 0, limit = 100){
// 获得table1 数据
let db = this.$database_tool.get_db()
let that = this
db.serialize(function(){
let sql_count = `select count(*) as count from general_statistics`
db.get(sql_count, [], function(error, row){
that.general_statistics_total_count = row.count;
})
let sql = `
select provinces.name as province_name,
categories.name as category_name,
year,
value
from general_statistics
join provinces on general_statistics.province_id = provinces.id
join categories on general_statistics.category_id = categories.id
order by general_statistics.id desc limit ${limit} offset ${offset}
`
db.all(sql, [], function(error, rows){
that.table1_data = rows;
})
})
db.close();
},