element 表格切换页面数据回显

在写业务过程中,遇到的需求是,element 表格切换分页器、和切换当前页面保留之前选中数据。

首先先介绍一下事件,官方文档里有,会的可以直接跳过。

  1. @selection-change表示当前页选中的数据
  2. @row-click表示点击当前行的事件(这个很重要,如果没就不会回显数据),并且返回值必须是当前行的唯一值
<el-table
        :data="tableData"
        ref="multipleTable"
        @selection-change="handleSelectionChange"
        @row-click="getRowKey"
      >
    <el-table-column
      type="selection"
      width="55">
    </el-table-column>
	<el-table-column
      prop="name"
      label="姓名"
      width="120">
    </el-table-column>
</<el-table>
<el-row class="airport-pagination">
      <el-pagination
        @size-change="handleSizeChange"
        @current-change="handleCurrentChange"
        :page="page"
        :page-size="pageSize"
        layout="prev, pager, next, jumper"
        :page-count="pageTotal"
        :current-page.sync="currentPage"
      >
      </el-pagination>
</el-row>

在点击分页器的事件中要注意几个地方

1.添加 this.$nextTick(function () { }),这个是等待dom更新之后执行,要是没这句话,渲染就会有问题。

2.点击页码时候,我会判断vuex里有没有存储选中数据,有的话就渲染;然后用id比较,如果相同就渲染,toggleRowSelection不光要把渲染的数据传进来,另外还要true,要不然切换当前页,不会显示,也就是这个地方困扰了我好长时间。

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

    methods: {
      getRowKey (row) {
        return row.id
      },
      handleCurrentChange () {
       this.$nextTick(function () {
          if (this.$store.getters.Get_Value(' vuex数据 ')) {
            this.$store.getters.Get_Value(' vuex数据 ').map(items => {
              this.tableData.map((item,index) => {
                if (item.id === items.id) {
                  this.$refs.multipleTable.toggleRowSelection(item, true);
                }
              })
            })
          }
        })
      },
     handleSelectionChange (val) {
     	this.vuexData = this.$refs.multipleTable.selection
      }
    },
    destroyed() {
      this.$store.dispatch('vuex方法名',{
        name:'',
        data: this.vuexData
      })
    }
  }
</script>

加载页面时候,调用handleCurrentChange,就可以实现切换页面的数据回显。
如果有问题的可以在下面留言。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wombat-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值