ElementUI Table 翻页缓存数据

Element UI Table 翻页保存之前的数据,网上找了一些,大部分都是用**:row-key** 和 reserve-selection ,但是我觉得有bug,我明明翻页了...但是全选的的个框还是勾着的(可能是使用方法不对,要是有好使的...请cute我一下...感谢)

所以自己写了一个...

思路:

  • 手动勾选的时候,将数据保存
    查看文档,发现有两个手动勾选触发的方法 selectselect-all,这两个返回的都是当前选中的数据,所以我们可以直接保存
  • 回显的话,我们调用官网给的方法 toggleRowSelection()
    调用的位置在,请求数据的方法中,因为请求完数据后,数据一定是最新的,table列表一定会刷新...所以我们只要在 列表渲染的数据 里 找到 保存的数据 就将其勾选.

代码如下,直接拷贝可用...因为是个demo,数据是写死变化的,根据自己的业务替换吧.

objectivec 复制代码
<template>
  <!--table 翻页-->
  <div>
    <el-table
      ref="multipleTable"
      :data="tableData"
      tooltip-effect="dark"
      style="width: 100%"
      @select-all="selectionChange"
      @select="selectionChange"
    >
      <el-table-column type="selection" width="55"> </el-table-column>
      <el-table-column label="日期" width="120">
        <template slot-scope="scope">{{ scope.row.date }}</template>
      </el-table-column>
      <el-table-column prop="name" label="姓名" width="120"> </el-table-column>
      <el-table-column prop="address" label="地址" show-overflow-tooltip>
      </el-table-column>
    </el-table>
    <el-pagination
      @size-change="sizeChange"
      @current-change="currentChange"
      :current-page="page.current"
      :page-size="page.pageSize"
      layout="prev, pager, next"
      :total="total"
    >
    </el-pagination>
  </div>
</template>

<script>
export default {
  data() {
    return {
      total: 4,
      page: {
        current: 1,
        pageSize: 2,
      },
      tableData: [
        {
          id: 0,
          date: '2016-05-03',
          name: '王小虎0',
          address: '上海市普陀区金沙江路 1518 弄',
        },
        {
          id: 1,
          date: '2016-05-03',
          name: '王小虎1',
          address: '上海市普陀区金沙江路 1518 弄',
        },
      ],
      multipleSelection: [],
    }
  },

  methods: {
    currentChange(val) {
      this.page.current = val
      this.getList()
    },
    sizeChange(val) {
      this.page.pageSize = val
      this.page.current = 1
      this.getList()
    },
    getList() {
      if (this.page.current === 1) {
        this.tableData = [
          {
            id: 0,
            date: '2016-05-03',
            name: '王小虎0',
            address: '上海市普陀区金沙江路 1518 弄',
          },
          {
            id: 1,
            date: '2016-05-03',
            name: '王小虎1',
            address: '上海市普陀区金沙江路 1518 弄',
          },
        ]
      } else {
        this.tableData = [
          {
            id: 2,
            date: '2016-05-03',
            name: '王小虎2',
            address: '上海市普陀区金沙江路 1518 弄',
          },
          {
            id: 3,
            date: '2016-05-03',
            name: '王小虎3',
            address: '上海市普陀区金沙江路 1518 弄',
          },
        ]
      }
      // 根据查询出来的数据,回显勾选状态
      this.$nextTick(()=>{
        this.tableData.forEach(row =>{
          if(this.multipleSelection.some((row1)=> row.id === row1.id)){
            this.$refs.multipleTable.toggleRowSelection(row)
          }
        })
      })
    },
    selectionChange(val) {
      this.multipleSelection = val
    },
  },
}
</script>
相关推荐
To_OC4 小时前
面试被问了三回三栏布局,这次我终于把 BFC 那层窗户纸捅破了
前端·css·面试
To_OC5 小时前
啃完 TS 工具类型我发现:Pick 和 Omit 原来就是一层窗户纸
前端·面试·typescript
风月说与山鬼6 小时前
三、大括号语法
前端·react.js
kyriewen6 小时前
我把最常踩的8个CORS跨域报错整理了一遍——第8个去年还不存在
前端·javascript
Csvn7 小时前
🕰️ 闭包 + setTimeout 的 5 个经典陷阱:为什么定时器看到的永远不是最新的值?
前端
lilian2337 小时前
Harmony os 技术实战|拼豆制图27:用单字符编码承载 50 张 70×70 图纸
前端·数据库·华为·harmonyos
CarIise8 小时前
CSS选择器与样式关联
前端·css·tensorflow
里欧跑得慢9 小时前
CSS 模块化架构的演进:BEM、CSS Modules 到 CSS-in-JS 的反思
前端·css·flutter·web·css-in-js
IT_陈寒9 小时前
Vue的computed属性把我坑惨了,原来我一直用错姿势
前端·人工智能·后端