位置:首页 > web前端 > vue

vue使用element UI怎么实现回显和翻页table表格保留选中

dearweb 发布:2021-09-27 18:22:43阅读:

首先来说我们在使用vue开发项目时,用到table表格中勾选翻页保留勾选记录以及回显记录的场景还是比较多的,具体要怎么实现呢?相信不少小伙伴曾经都感到过头疼,当你看到这篇文章时,这样的问题将会被解答。

首先我们看一下table这个组件

官方文档告诉我们,如果组件实现多选的功能需要用到这么几个属性:手动添加一个 el-table-column,设type属性为 selection 即可,就像下面这样

<template>
  <el-table
    ref="multipleTable"
    :data="tableData"
    tooltip-effect="dark"
    style="width: 100%"
    @selection-change="handleSelectionChange">
    <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>
</template>
<script>
  export default {
    data() {
      return {
        tableData: [{
          date: '2016-05-03',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1518 弄'
        }, {
          date: '2016-05-02',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1518 弄'
        }, {
          date: '2016-05-04',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1518 弄'
        }, {
          date: '2016-05-01',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1518 弄'
        }, {
          date: '2016-05-08',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1518 弄'
        }, {
          date: '2016-05-06',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1518 弄'
        }, {
          date: '2016-05-07',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1518 弄'
        }],
        multipleSelection: []
      }
    },
    methods: {
        handleSelectionChange(val) {        
            this.multipleSelection = val;
          }
    }
  }
</script>

这样我们就能实现多选了,表格的预览效果

image.png

上面介绍了多选,如果实现翻页保留选中,其实也很简单,就是在el-table-column里面增加一个属性 :reserve-selection="true"以及在table里面增加一个函数 getRowKey(),有些重复的代码,我在这儿就不写了。

<template>
  <el-table
    ref="multipleTable"
    :data="tableData"
    tooltip-effect="dark"
    :row-key=="getRowKey"
    style="width: 100%"
    @selection-change="handleSelectionChange">
    <el-table-column
      type="selection"
      :reserve-selection="true"
      width="55">
    </el-table-column>
</template>
<script>
  export default {
  methods: {
      getRowKey (row) { 
          return row.id 
      },
      handleSelectionChange(val) {        
          this.multipleSelection = val;
        }
    }
  },
</script>

通过添加这两个属性,你在翻页的时候也能保存之前所选中的数据。记下来要介绍的就是回显了。

table数据回显

其实回显根据官方给的解释也是很简单的,只需要调用一个方法 toggleRowSelection(row,true) 就行了,注意这里有两个参数,第一个代表所在列,第二个就代表是否勾选,true为勾选。

这里我们拿到回显数据之后在dom渲染完成的时候就开始进行渲染,建议在created里面写

<script>
  export default {
    data() {},
    created(){
        this.$nextTick(()=>{
           // arr 为我们需要渲染的数据
           arr.forEach(row => { 
             this.$refs.multipleTable.toggleRowSelection(row,true);
          });
        })
    }
  }
 </script>

这个回显不管如何只要在渲染之前赋值给表格就行了,会自动进行计算。

上面所讲到的就是处理element 中table表格数据回显以及翻页保留选中数据的方法,本文就先到这儿,后续还将有更为精彩的案例等着你喔。

24人点赞 返回栏目 提问 分享一波

小礼物走一波,支持作者

还没有人赞赏,支持一波吧

留言(问题紧急可添加微信 xxl18963067593) 评论仅代表网友个人 留言列表

暂无留言,快来抢沙发吧!

本刊热文
网友在读
手机扫码查看 手机扫码查看