动态复选框功能与表格搭配

通过多选框组组件拿到选中的值 在表格渲染的时候只渲染数组中的 来达到动态复选框操作表格

selectDynamicColumn是初始选中的值 这里我全给了(数组中有什么就选中什么)他只能含有

dynamicData 循环 生成多选按钮

   <el-checkbox-group v-model="selectDynamicColumn">
                <!-- 当循环中有一项要操作是就先找到 -->
                   <el-checkbox  v-for="item in dynamicData" :label="item.label" :key="item.label" :disabled='item.label==="标题"'/>
               </el-checkbox-group>
import {dynamicData,selectDynamicColumn,tableColumns} from './dynamic/index'

prop是渲染表格的值 

selectDynamicColumn是初始选中的数据 里面只能有label不可以有prop

// // 动态复选框功能 
import { ref, watch } from 'vue'
const dynamicRaw = [
        { label: '排名', prop: 'rank' },
        { label: '标题', prop: 'title' },
        { label: '作者', prop: 'author' },
        { label: '日期', prop: 'date' },
        { label: '描述', prop: 'description' }
    ]
    // 复选框选项
export const dynamicData = ref(dynamicRaw)
    // 已选选项 (勾选上的往这里来放)
export const selectDynamicColumn = ref([])
const initSelectDynamicColumn = () => {
    selectDynamicColumn.value = dynamicData.value.map(item => item.label)
}
initSelectDynamicColumn()
    // 这里不能在使用selectDynamicColumn用于table-colcumn 这个就是监听的你不能改
    // 处理表格列数据 

export const tableColumns = ref([])
    // 让selectDynamicColumn做变化的那个数组
watch(selectDynamicColumn, (newvalue) => {
    tableColumns.value = []
        // 为什么不拿到newvalue直接赋值 因为newvalue是个对象我们要将他转成数组 并且带上prop
        // 将存在newvalue中的label和dynamicData比较
    const selectdata = dynamicData.value.filter(item => newvalue.includes(item.label))
        //     : Proxy {label: "排名", prop: "rank"}
        // 1: Proxy {label: "标题", prop: "title"}
        // 2: Proxy {label: "作者", prop: "author"}
        // 3: Proxy {label: "日期", prop: "date"}
        // 4: Proxy {label: "描述", prop: "description"}
    tableColumns.value.push(...selectdata)
}, {
    immediate: true
})
//             后端来的数据
<el-table :data='articleList' v-loading='loading' :max-height="tableHeight" border ref="tableRef">
      <el-table-column v-for="item in tableColumns" :key="item" :prop="item.prop" :label="item.label" >
        <template v-if="item.prop==='date'" #default="{row}">
          {{formatTime(row.date)}}
        </template>
      </el-table-column>
    </el-table>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值