vue3 element-plus table 多选框在在初始化渲染数据时默认将isopen:ture行数据赋值选中状态

本文介绍了如何在Vue3+ElementPlus的表格中,根据isOpen字段决定表格行的默认选中状态,并通过计算属性和自定义渲染实现复选框的动态控制,以及处理选择项变化的事件。
摘要由CSDN通过智能技术生成

vue3 element-plus table 多选框在在初始化渲染数据时默认将isopen:ture行数据赋值选中状态

在 Vue3 + Element Plus 的表格中,如果想根据数据中的某个字段(如 isOpen)来决定是否默认选中某一行,你可以通过自定义一个计算属性或者方法来实现。这里是一个示例:

Html
<template>
  <el-table :data="tableData" style="width: 100%">
    <el-table-column type="selection" width="55" :reserve-selection="true">
      <template slot-scope="{ row }">
        <el-checkbox v-model="isSelected(row)" @change="handleSelectionChange"></el-checkbox>
      </template>
    </el-table-column>
    <!-- 其他列的定义 -->
  </el-table>
</template>

<script setup>
import { ref, computed } from 'vue'
import { ElTable, ElTableColumn, ElCheckbox } from 'element-plus'

// 假设这是你的表格数据
const tableData = [
  { id: 1, name: '张三', isOpen: true },
  { id: 2, name: '李四', isOpen: false },
  // 更多数据...
]

// 存储已选择行的引用
const selectedRows = ref([])

// 计算行是否应被选中
const isSelected = (row) => {
  return computed(() => row.isOpen && selectedRows.value.includes(row))
}

// 处理选择项改变的事件
const handleSelectionChange = (row, checked) => {
  if (checked) {
    selectedRows.value.push(row)
  } else {
    selectedRows.value = selectedRows.value.filter(r => r.id !== row.id)
  }
}

// 在组件初始化时预设默认选中的行(可选)
onMounted(() => {
  tableData.forEach(row => {
    if (row.isOpen) {
      selectedRows.value.push(row)
    }
  })
})
</script>

在这个例子中,我们并没有直接使用 default-checked-keys,而是通过自定义渲染来控制复选框的状态。当 isOpen 字段为 true 时,默认选中该行。同时,我们监听了复选框的 change 事件,以便实时更新已选择的行。

注意:这个示例可能需要根据实际情况进行调整以适应你的具体需求。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值