实现思路:

<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页面翻页勾选的记忆功能相关推荐

  1. Vue+iView table分页勾选记忆功能

    iView table分页勾选记忆功能 一,需求. a,需求分析: 第一页勾选后,再点分页,勾选其它页数据,可以记住所有勾选的数据,然后可以回显所选数据到页面上,并且跳转页面仍可显示. b,现有功能: ...

  2. layui表格中开启复选框后,怎么获取跨页勾选的全部数据,layui表格获取勾选的所有数据,获取跨页勾选数据的数量,如何预渲染让数据默认勾选上?

    这个功能layui 本身可能没直接提供给我们相关的功能  ,需要自己写出来了  有几个疑点  可能要一一排查出来 核心点: 能不能有一个状态值 能判断当前行的数据 是否是勾选状态 然后就可以 一步一步 ...

  3. js实现跨页勾选复选框

    在这里插入代码片# 前台列表页面实现跨页勾选复选框 思路:分页是后台服务端分页.做不到实时性.所以在js中可以封装一个js Map,每勾选一个将勾选的主键放到Map中,取消勾选时将其从Map中移除.不 ...

  4. vue element el-table表格勾选求和 el-table 勾选获取表格某几列数据求和

    vue element el-table 表格勾选获取几列数据求和 el-table表格勾选求和 先看案例如下图所示:el-table 勾选后求出支付金额数据,计算出总金额数据. 我们来一步步分析方便 ...

  5. element-ui 中 el-table 分页多选(记住上一页勾选数据)及编辑回显

    element-ui 中 el-table 分页多选(记住上一页勾选数据)及编辑回显 element-ui 的官网是有属性的 el-table-colum 的 reserve-selection 属性 ...

  6. Vue 实现翻页器 下一页 处理显示多页面要下一页非表格

    vue里面因为数据太多要弄多个页面,路由又不行,element ui的分页器用不了 我的环境是electron-vue,和vue通用的可以无视,这里采用了element ui 的走马灯当做容器翻页 首 ...

  7. Element UI 多选表格【翻页多选】全能版(含翻页多选数据反显、toggleRowSelection失效的原因解析和解决方案)

    效果预览 实现思路 data中定义 selectedList 数组保存选中的数据 在页面初次渲染.翻页.切换每页数据数量等每次重新获取表格数据渲染表格时,都根据 selectedList 勾选表格中已 ...

  8. 前端Vue书籍翻页功能利用turn.js来完成以及知识点(源码)

    目录 下载 文档 开始 构造方法 可配置项 方法 语法 事件 两种方式添加事件 自动翻页loading加载功能 案例 CSS basic.css源码如下 JS里面代码太多了,直接官网下载 index. ...

  9. 使用js实现微信小页面翻页的原理介绍

    为什么80%的码农都做不了架构师?>>>    文中要介绍的内容是四个手机页面,手指向上或者向下滑动可以实现翻页的功能.由于代码比较简短,可能存在许多bug,思路可供大家参考. 1. ...

最新文章

  1. 关于python读取文件的规则
  2. 一篇不一样的docker原理解析
  3. kubectl 安装
  4. C++ 智能指针最佳实践源码分析
  5. python以什么方式处理文件-Python文件修改和常用方法
  6. 一起来做个免登录资源导航小程序!
  7. Mr.J-- jQuery学习笔记(十四)--动画显示隐藏
  8. JAVA获取服务器路径的方法
  9. CUDA C编程权威指南 第六章 流和并发
  10. Exception异常处理
  11. 并查集(2)-按秩合并和路径压缩
  12. java win8 mac地址_Win8系统查看mac地址的两种方法
  13. 企业数字化转型,运营人员如何构建数字化运营能力?
  14. 手机客户端(EZview/智U)添加设备时,为什么会提示“该设备已被其他账号添加”?
  15. 思科路由器:学会看路由表信息,show ip route详解
  16. Java中notify和notifyAll的区别 - 何时以及如何使用
  17. 使用Tensorflow2和Pytorch实现线性回归
  18. 免费开放API支付接口
  19. 如何用远丰DrpBuilder打造企业社会化分销体系
  20. 徐小平:关了公司以后,我有这些话要对你说

热门文章

  1. Linux 内核存缺陷:66% 安卓设备面临受攻击风险
  2. Bitlocker企业安全加密管理系列-2
  3. vc 显示非模态对话框
  4. win7系统自带截图工具快捷键是什么?怎么设置快捷键
  5. iAPP(05)自习室占座
  6. 转:对于一个字节(8bit)的变量,求其二进制表示中“1”的个数
  7. Exchange Server2010系列之十四:个人邮件存档
  8. oracle远程连接配置
  9. 安装windows 2003 R2额外域控制器时出现1168错误的解决
  10. RSA非对称加密算法Java实现