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>
相关推荐
AI3D_WebEngineer11 分钟前
企业级业务平台项目设计、架构、业务全解之组件库篇
前端·javascript·vue
charlie11451419137 分钟前
从零开始理解 CSS:让网页“活”起来的语言2
前端·css·笔记·学习·选择器·样式表·原生
浪裡遊1 小时前
Next.js路由系统
开发语言·前端·javascript·react.js·node.js·js
mapbar_front1 小时前
职场中的顶级能力—服务意识
前端
尽兴-1 小时前
[特殊字符] 微前端部署实战:Nginx 配置 HTTPS 与 CORS 跨域解决方案(示例版)
前端·nginx·https·跨域·cors·chrom
JIngJaneIL2 小时前
助农惠农服务平台|助农服务系统|基于SprinBoot+vue的助农服务系统(源码+数据库+文档)
java·前端·数据库·vue.js·论文·毕设·助农惠农服务平台
云外天ノ☼2 小时前
待办事项全栈实现:Vue3 + Node.js (Koa) + MySQL深度整合,构建生产级任务管理系统的技术实践
前端·数据库·vue.js·mysql·vue3·koa·jwt认证
gihigo19982 小时前
使用JavaScript和Node.js构建简单的RESTful API
javascript·node.js·restful
一位搞嵌入式的 genius2 小时前
前端实战开发(三):Vue+Pinia中三大核心问题解决方案!!!
前端·javascript·vue.js·前端实战
塞纳河畔的歌2 小时前
保姆级教程 | 麒麟系统安装Edge浏览器
前端·edge