el-table复选框实现分页记忆

el-table 结合 el-pagination 实现分页后默认是没有复选框记忆功能的,想到采用Map数据结构来存储所选选项。但是vue响应数据是不支持的,MapSet里面的元素变化时Vue追踪不到这些变化,因此无法做出响应。

解决方法是将Map可序列化,写在computed中实现响应式。

  data () {
    return {
    myMap:new Map(),
    }
 },
 methods:{
    selectMemoriedDataFn () { // 分页记忆自动选中方法
      let currentArr = this.myMap.get(this.currentPage)  // 当前分页对应被选中数据
      console.log('选中',currentArr)
      if (currentArr && currentArr.length) { // 存在则继续执行
        let tempRowsIDs = this.tableData.map(L => L.id) // 当前分页被选中数据的id集合
        currentArr.forEach((item) => { // 遍历当前分页被选中数据
          if (tempRowsIDs.includes(item.id)) { // id匹配上,则选中this.$refs.multipleTable.toggleRowSelection(this.tableData[tempRowsIDs.indexOf(item.id)])
          }
        })
      }
    },
    // 选中选项触发
    handleSelect(val){
      this.myMap.set(this.currentPage,val)
      let all=[]
      for (let 
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
`el-table` 是 Element UI 提供的一个用于展示表格的组件,它提供了丰富的功能,包括列宽调整、分页、排序、搜索以及数据回显等。关于复选框选中回显的问题,通常是在表格中添加了 `selection` 属性,用来管理选中的行,并希望用户操作(如点击选中/取消选中)后,状态能够保存并在页面刷新或重新加载数据后依然保持原选状态。 具体实现步骤如下: 1. 在 `el-table` 的配置中启用选择模式: ```html <el-table :data="tableData" :selection="selectedRows"> ... </el-table> ``` 这里,`:selection="selectedRows"` 是绑定一个数组,存储选中的行数据。 2. 设置 `row-key`,确保每个数据项都有唯一的标识,以便在数据发生变化时可以正确地更新选中状态: ```html <el-table :data="tableData" :selection="selectedRows" :row-key="rowKey"> ... </el-table> ``` 3. 保存选中状态到数据源或Vuex、localStorage等持久化存储: ```javascript // 在获取数据或刷新页面之前,检查并设置选中行 loadData() { this.selectedRows = localStorage.getItem('selectedRows') || []; // 加载数据 } // 在数据改变后,保存选中行到持久化存储 handleSelectChange(rows) { localStorage.setItem('selectedRows', rows.map(row => row.id)); // 假设id作为唯一的标识 } ``` 4. 针对表格的数据回显,确保在数据加载时将之前保存的选中状态还原到对应的行。 这样,当你再次打开页面时,只要数据结构不变,用户之前的选中状态就会被正确地复现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值