vue页面翻页勾选的记忆功能
实现思路:
<template><div><div class="customer-container"><el-row><el-form :inline="true" :model="tableList" class="demo-form-inline"><el-form-item label=""><el-input size="mini" style="width:140px;" v-model="tableList.pageName" placeholder="请输入页面名称"></el-input><el-input size="mini" style="width:140px;" v-model="tableList.shopName" placeholder="请输入店铺名称"></el-input><el-button size="small" type="primary" style="margin-left: 10px;"@click="getSearchPage(tableList.shopName,tableList.pageName)">查询</el-button></el-form-item><!--<el-button style="float:left;" type="primary" size="small" @click="handleChooseData">获取选中的内容</el-button>--></el-form></el-row></div><el-table ref="multipleTable" :data="gridDatas" border tooltip-effect="dark" style="width: 100%;" @selection-change="handleSelectionChange"><el-table-column type="selection" width="55"></el-table-column><el-table-column prop="pho" label="图片"><!– 图片的显示 –><template slot-scope="scope"><img :src="scope.row.pho" min-width="70" height="70" /></template></el-table-column><el-table-column prop="goodsName" label="商品名称"></el-table-column></el-table><el-pagination class="pagination" @size-change="SizeChangeDanpin" @current-change="handleCurrentChange" background layout="total, prev, pager, next , jumper" :current-page.sync="tableList.pageIndex" :total="totalCount"></el-pagination></div>
</template>
定义data值:
data() {return {selectedData:[],tableList: {goodsName: '',companyId: '00000001',pageIndex: 1,goodsId: ''},gridDatas: [],totalCount:1,idKey: 'goodsId', // 标识列表数据中每一行的唯一键的名称(需要按自己的数据改一下)multipleSelection: [],multipleSelectionAll:[],//所有选中的数据包含跨页数据}
},
方法中定义:
methods: {setSelectRow() {if (!this.multipleSelectionAll || this.multipleSelectionAll.length <= 0) {return;}// 标识当前行的唯一键的名称let idKey = this.idKey;let selectAllIds = [];let that = this;this.multipleSelectionAll.forEach(row=>{selectAllIds.push(row[idKey]);})this.$refs.multipleTable.clearSelection();for(var i = 0; i < this.gridDatas.length; i++) {if (selectAllIds.indexOf(this.gridDatas[i][idKey]) >= 0) {// 设置选中,记住table组件需要使用ref="table"this.$refs.multipleTable.toggleRowSelection(this.gridDatas[i], true);}}} ,// 记忆选择核心方法changePageCoreRecordData () {// 标识当前行的唯一键的名称let idKey = this.idKey;let that = this;// 如果总记忆中还没有选择的数据,那么就直接取当前页选中的数据,不需要后面一系列计算if (this.multipleSelectionAll.length <= 0) {this.multipleSelectionAll = this.multipleSelection;return;}// 总选择里面的key集合let selectAllIds = [];this.multipleSelectionAll.forEach(row=>{selectAllIds.push(row[idKey]);})console.log(this.multipleSelectionAll)console.log(selectAllIds)let selectIds = []// 获取当前页选中的idthis.multipleSelection.forEach(row=>{selectIds.push(row[idKey]);// 如果总选择里面不包含当前页选中的数据,那么就加入到总选择集合里if (selectAllIds.indexOf(row[idKey]) < 0) {that.multipleSelectionAll.push(row);}})let noSelectIds = [];// 得到当前页没有选中的idthis.gridDatas.forEach(row=>{if (selectIds.indexOf(row[idKey]) < 0) {noSelectIds.push(row[idKey]);}})noSelectIds.forEach(id=>{if (selectAllIds.indexOf(id) >= 0) {for(let i = 0; i< that.multipleSelectionAll.length; i ++) {if (that.multipleSelectionAll[i][idKey] == id) {// 如果总选择中有未被选中的,那么就删除这条that.multipleSelectionAll.splice(i, 1);break;}}}})},//点击商品名称页handleCurrentChange(val) {this.changePageCoreRecordData();this.tableList.pageIndex=val;this.getDatas();},// 改变单品表格每页数目SizeChangeDanpin(val) {this.changePageCoreRecordData();console.log(`每页 ${val} 条`);},getDatas(){WxHomeGoodOn(this.tableList).then((data) => {this.loading = false;if(data.code === 1){if(data !==''){this.loading = false;this.gridDatas = data.data;this.totalCount = data.pageInfo.totalCount;setTimeout(()=>{this.setSelectRow();}, 200)}}}).catch(message => {console.log('"请求失败"')this.loading = false;})},handleSelectionChange(val) {this.multipleSelection = val;},// 得到选中的所有数据getAllSelectionData() {// 再执行一次记忆勾选数据匹配,目的是为了在当前页操作勾选后直接获取选中数据this.changePageCoreRecordData();console.log(this.multipleSelectionAll)}},mounted(){this.$nextTick(function () {// 初始化渲染this.tableList.pageIndex = 1this.getDatas()})}
转载于:https://www.cnblogs.com/anjing940/p/10207283.html
vue页面翻页勾选的记忆功能相关推荐
- Vue+iView table分页勾选记忆功能
iView table分页勾选记忆功能 一,需求. a,需求分析: 第一页勾选后,再点分页,勾选其它页数据,可以记住所有勾选的数据,然后可以回显所选数据到页面上,并且跳转页面仍可显示. b,现有功能: ...
- layui表格中开启复选框后,怎么获取跨页勾选的全部数据,layui表格获取勾选的所有数据,获取跨页勾选数据的数量,如何预渲染让数据默认勾选上?
这个功能layui 本身可能没直接提供给我们相关的功能 ,需要自己写出来了 有几个疑点 可能要一一排查出来 核心点: 能不能有一个状态值 能判断当前行的数据 是否是勾选状态 然后就可以 一步一步 ...
- js实现跨页勾选复选框
在这里插入代码片# 前台列表页面实现跨页勾选复选框 思路:分页是后台服务端分页.做不到实时性.所以在js中可以封装一个js Map,每勾选一个将勾选的主键放到Map中,取消勾选时将其从Map中移除.不 ...
- vue element el-table表格勾选求和 el-table 勾选获取表格某几列数据求和
vue element el-table 表格勾选获取几列数据求和 el-table表格勾选求和 先看案例如下图所示:el-table 勾选后求出支付金额数据,计算出总金额数据. 我们来一步步分析方便 ...
- element-ui 中 el-table 分页多选(记住上一页勾选数据)及编辑回显
element-ui 中 el-table 分页多选(记住上一页勾选数据)及编辑回显 element-ui 的官网是有属性的 el-table-colum 的 reserve-selection 属性 ...
- Vue 实现翻页器 下一页 处理显示多页面要下一页非表格
vue里面因为数据太多要弄多个页面,路由又不行,element ui的分页器用不了 我的环境是electron-vue,和vue通用的可以无视,这里采用了element ui 的走马灯当做容器翻页 首 ...
- Element UI 多选表格【翻页多选】全能版(含翻页多选数据反显、toggleRowSelection失效的原因解析和解决方案)
效果预览 实现思路 data中定义 selectedList 数组保存选中的数据 在页面初次渲染.翻页.切换每页数据数量等每次重新获取表格数据渲染表格时,都根据 selectedList 勾选表格中已 ...
- 前端Vue书籍翻页功能利用turn.js来完成以及知识点(源码)
目录 下载 文档 开始 构造方法 可配置项 方法 语法 事件 两种方式添加事件 自动翻页loading加载功能 案例 CSS basic.css源码如下 JS里面代码太多了,直接官网下载 index. ...
- 使用js实现微信小页面翻页的原理介绍
为什么80%的码农都做不了架构师?>>> 文中要介绍的内容是四个手机页面,手指向上或者向下滑动可以实现翻页的功能.由于代码比较简短,可能存在许多bug,思路可供大家参考. 1. ...
最新文章
- 关于python读取文件的规则
- 一篇不一样的docker原理解析
- kubectl 安装
- C++ 智能指针最佳实践源码分析
- python以什么方式处理文件-Python文件修改和常用方法
- 一起来做个免登录资源导航小程序!
- Mr.J-- jQuery学习笔记(十四)--动画显示隐藏
- JAVA获取服务器路径的方法
- CUDA C编程权威指南 第六章 流和并发
- Exception异常处理
- 并查集(2)-按秩合并和路径压缩
- java win8 mac地址_Win8系统查看mac地址的两种方法
- 企业数字化转型,运营人员如何构建数字化运营能力?
- 手机客户端(EZview/智U)添加设备时,为什么会提示“该设备已被其他账号添加”?
- 思科路由器:学会看路由表信息,show ip route详解
- Java中notify和notifyAll的区别 - 何时以及如何使用
- 使用Tensorflow2和Pytorch实现线性回归
- 免费开放API支付接口
- 如何用远丰DrpBuilder打造企业社会化分销体系
- 徐小平:关了公司以后,我有这些话要对你说