el-table分页保留勾选的数据

news/2024/11/9 4:54:20/

1、目标效果

        代码全部写在下方App.vue中,复制粘贴即可运行 

       

        目前选中了5条数据

        

        点击下方切换分页,选中的数据消失了

  

2、原理

        (1)el-table复选框,用一个变量数组selectedRow:[ ] 监听选择了哪些数据

<el-table-column type="selection" width="55"></el-table-column>

        el-table自身有监听表格中复选框变化的方法:@selection-change,回调函数参数为选中的表格数据 

<el-table :data="tableList" border style="width: 100%" @selection-change="val => selectedRow = val">

         (2)保存选中的数据:

        在el-table中添加行的标识 :row-key="val => val.date",回调函数参数为表格每一行数据,这里最好选择能唯一标识每一行的数据作为key的返回值,否则保存选中失败

<el-table :row-key="val => val.date" :data="tableList" border style="width: 100%"@selection-change="val => selectedRow = val">

        在复选框上加上:reserve-selection="true" 

      <el-table-column :reserve-selection="true" type="selection" width="55"></el-table-column>

        (3)slice分页原理:

        这里没有请求后台获取数据,自己手动了个数组,通过slice进行切割,请求后台获取数据,上述方法也是可以翻页保存选中的数据。

        slice(start, end) : 返回一个新数组,不改变原来的数组,区间就是有头无尾[start, end)

        分页公式:slice( (页数-1) * 每页大小,页数 * 每页大小 )

        打个比方:

                页数 = 1,每页大小 = 5

                    slice(0, 5) =>  取的是数组索引为0,1,2,3,4元素,因为数组从0开始

                页数 = 2,每页大小 = 5

                    slice(5, 10) => 取的是索引为5,6,7,8,9元素

                .......

3、源码

<template><div id="app"><div>已选中了条数: {{ selectedRow?.length }}</div><el-table :row-key="val => val.date" :data="tableList" border style="width: 100%"@selection-change="val => selectedRow = val"><el-table-column :reserve-selection="true" type="selection" width="55"></el-table-column><el-table-column type="index" width="55" label="序号"></el-table-column><el-table-column prop="date" label="日期" width="180"></el-table-column><el-table-column prop="name" label="姓名" width="180"></el-table-column><el-table-column prop="address" label="地址"></el-table-column></el-table><el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange":current-page="pageConfig.pageNum" :page-sizes="[1, 2, 5, 10]" :page-size="pageConfig.pageSize"layout="total, sizes, prev, pager, next, jumper" :total="pageConfig.total"></el-pagination></div>
</template><script>export default {name: 'App',data() {return {pageConfig: {pageNum: 1,pageSize: 5,total: 0},selectedRow: [],tableData: [{date: '2016-05-01',name: '王小虎',address: '北京'}, {date: '2016-05-02',name: '王小虎',address: '上海'}, {date: '2016-05-03',name: '王小虎',address: '广州'}, {date: '2016-05-04',name: '王小虎',address: '深圳'},{date: '2016-05-05',name: '王小虎',address: '杭州'}, {date: '2016-05-06',name: '王小虎',address: '武汉'}, {date: '2016-05-07',name: '王小虎',address: '长沙'}, {date: '2016-05-08',name: '王小虎',address: '佛山'}, {date: '2016-05-09',name: '王小虎',address: '东莞'}, {date: '2016-05-10',name: '王小虎',address: '成都'}],tableList: []}},created() {this.pageConfig.total = this.tableData.length;this.getList(this.pageConfig.pageNum, this.pageConfig.pageSize)},methods: {// 监听页面大小变化handleSizeChange(val) {this.getList(this.pageConfig.pageNum, val)},// 监听当前页变化 (currentPage-1)*pageSize,pageSizehandleCurrentChange(val) {this.getList(val, this.pageConfig.pageSize)},// 获取表格数据getList(pageNum, pageSize) {this.tableList = this.tableData.slice((pageNum - 1) * pageSize, pageNum * pageSize)}}
}
</script><style>
#app {font-family: Avenir, Helvetica, Arial, sans-serif;-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;text-align: center;color: #2c3e50;margin-top: 60px;
}
</style>


http://www.ppmy.cn/news/93285.html

相关文章

如何修改滚动条样式?

.bigbox{ /* 设置滚动条的样式 */ ::-webkit-scrollbar { width: 8px; height: 10px; background-color: #f5f5f5; } /*定义滚动条轨道 内阴影圆角*/ ::-webkit-scrollbar-track { background-color: #f5f5f5; } /*定义滑块 内阴影圆角*/ ::-webkit-scrollbar-thumb { borde…

Spring注解的使用

第一步&#xff1a;加入aop的依赖第二步&#xff1a;在配置文件中添加context命名空间第三步&#xff1a;在配置文件中指定扫描的包第四步&#xff1a;在Bean类上使用注解 第一步&#xff1a;加入aop的依赖 我们可以看到当加入spring-context依赖之后&#xff0c;会关联加入a…

【全年汇总】2023年CCF体系结构/并行与分布计算/存储系统会议截稿时间汇总(持续更新)

本博文是根据CCF会议推荐的计算机体系结构/并行与分布计算/存储系统领域相关会议目录撰写。 一、截稿时间总览 截稿时间的总时间轴内容将会持续更新...... 往年投稿及录用情况及链接详见图片后面的内容。 二、会议详细目录 由于一些会议的投稿时间还没公开&#xff0c;因此根据…

Laravel框架05:模型和自动验证

Laravel框架05&#xff1a;模型和自动验证 一、模型&#xff08;AR模式&#xff09;概述二、定义模型三、调用模型四、基本操作1. 添加数据① AR模式② Request 2. 查询数据3. 修改操作① AR模式② update 4. 删除操作 五、控制器验证1. 基本语法2. 输出错误信息 一、模型&…

2016年东北三省自主命题B题-车辆类型与数量的自动检测

目录 摘 要 一、问题重述 二、问题分析 三、模型假设 四、部分符号说明

【瑞萨RA_FSP】DMAC/DTC——直接存储器访问与数据传输

文章目录 一、DMAC和DTC模块简介1. DMAC 特性2. DTC 特性 二、DMAC 模块框图分析三、DMAC 传输模式1. 正常传输模式2. 重复传输模式3. 块传输模式4. 重复-块传输模式 四、DTC 模块框图分析五、DTC 传输模式1. 正常传输模式2. 重复传输模式3. 块传输模式 六、DMAC和DTC关键特性对…

20230523----重返学习-Hooks组件useState()-Hooks组件useEffect()-Hook函数组件说明

day-076-seventy-six-20230523-Hooks组件useState()-Hooks组件useEffect()-Hook函数组件说明 Hooks组件useState() React Hooks 组件化开发 React 组件分类 函数组件 不具备状态、ref、周期函数等内容&#xff0c;第一次渲染完毕后&#xff0c;无法基于组件内部的操作来控制其…

io三种模型

io模型 一、非阻塞IO 不会因为数据没有准备好而发生阻塞&#xff0c;继续向下执行 特点&#xff1a; 1.不会因为数据没有准备好而发生阻塞。 2.在读取或写入操作时&#xff0c;如果数据没有准备好&#xff0c;函数会立即返回一个错误码。 3.需要使用循环或轮询方式来不断尝试读…