vue3实现表格多选默认选中

1.问题描述

实现element -plus组件库里面的table表格多选功能默认选中数据


思路

1.表格数据返回中会有包括数据是否选中的状态字段

2.根据字段来控制是否选中, 组件的api   toggleRowSelection 可以控制,详细看组件库api

3,在vue3中ref的取值跟vue2不一样,不要搞混了 

    <el-table
            ref="multipleTableRef"
            :data="state.tableData"
            style="width: 100%"
            @selection-change="handleSelectionChange"
          > 
            <el-table-column type="selection" width="55" />
            <el-table-column type="index" label="序号" width="55" />
            <el-table-column property="remark" label="用户名" width="120"/>
            <el-table-column property="name" label="姓名" width="250" />
            <el-table-column property="address" label="备注"/>
          </el-table>
js部分
import {reactive,watch,ref, onMounted} from 'vue'
// import axios from 'axios'
// import { roleTypes } from 'element-plus'
const multipleTableRef = ref()
const state = reactive({
  tableData:[
    {
    remark: '张三',
    name: 'Tom',
    address: 'No. 189, Grove St, Los Angeles',
    status: 2,
  },
  {
    remark: '李四',
    name: 'Tom',
    address: 'No. 189, Grove St, Los Angeles',
    status: 1,
  },
  {
    remark: '王五',
    name: 'Tom',
    address: 'No. 189, Grove St, Los Angeles',
    status: 1,
  },

  ]
})
onMounted(() => {
  console.log(multipleTableRef.value);
     state.tableData.forEach(row => {
         if (row.status == 1){
             multipleTableRef.value.toggleRowSelection(row,true)
            }else {
              multipleTableRef.value.toggleRowSelection(row,false)
          } 
  })
})

const handleSelectionChange = (val) => {
  console.log(val);
}
</script>

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue实现按钮多选,可以通过以下步骤: 1. 定义一个数组来存储选中的按钮。例如,可以在 data 中添加一个名为 selected 的数组。 2. 给每个按钮绑定一个点击事件,在点击时将该按钮的状态加入或从 selected 数组中移除。可以使用 v-bind:class 绑定一个 CSS 类来实现按钮选中效果。 3. 可以添加一个全选按钮,点击时将所有按钮的状态加入或从 selected 数组中移除。可以使用 v-model 来绑定一个全选复选框的状态,通过计算属性来实现全选功能。 以下是一个简单的示例代码: ``` <template> <div> <button v-for="(button, index) in buttons" :key="index" :class="{ selected: isSelected(index) }" @click="toggleSelection(index)"> {{ button }} </button> <br> <label> <input type="checkbox" v-model="selectAll"> 全选 </label> </div> </template> <script> export default { data() { return { buttons: ['按钮1', '按钮2', '按钮3'], selected: [] } }, computed: { selectAll: { get() { return this.selected.length === this.buttons.length }, set(value) { if (value) { this.selected = [...this.buttons.keys()] } else { this.selected = [] } } } }, methods: { toggleSelection(index) { const i = this.selected.indexOf(index) if (i === -1) { this.selected.push(index) } else { this.selected.splice(i, 1) } }, isSelected(index) { return this.selected.includes(index) } } } </script> ``` 在这个示例中,每个按钮的状态通过绑定 isSelected 方法来实现,selectAll 的状态则通过计算属性来实现。当点击全选按钮时,如果该复选框的值为 true,则将所有按钮的状态加入 selected 数组中;如果该复选框的值为 false,则将 selected 数组清空。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值