表头插槽使用#header,不能使用slot=“header”

前端开发过程中遇到了UI设计了这样一个界面,并列两排表格,点击左侧行右侧显示该行下的数据信息,勾选左侧内容时右侧内容全部勾选,右侧内容有分页。
这是element-ui的多选表格已经不能满足需求了,并且多选框组el-checkbox-group也不能满足需求
这时需要单独定义左侧的表头checkbox和内容的checkbox
在这里插入图片描述
可以使用slot插槽来实现表头和内容的单独控制
表头插槽使用#header,不能使用slot=“header”,因为表头数据如果使用动态变量(v-model、indeterminate),用slot=“header”就不会动态更新。
当使用slot="header"来定义表头时,Vue会将其视为静态内容,即在编译阶段就确定了其内容,不会进行响应式更新。这是因为Vue在编译模板时,会对静态内容进行优化,将其提升为静态的渲染结果,以提高性能。
而使用#header的方式,是Vue的一种特殊语法,它会将表头内容作为一个动态插槽处理。动态插槽会被Vue处理为响应式的内容,当数据变化时,Vue会重新渲染插槽内容,并将其更新到对应的位置上。这样就实现了自动更新。

而使用#header的方式,是Vue的一种特殊语法,它会将表头内容作为一个动态插槽处理,可以实现自动更新。这是因为动态插槽会被Vue处理为响应式的内容,当数据变化时,会自动更新对应的插槽内容。
以上内容引用于https://blog.csdn.net/wuj1935/article/details/132271478

其余插槽使用slot-scope=“scope”

根据具体的状态值修改即可

 indeterminate为false,checkAll为false的时候,状态为未选中。
 indeterminate为true,checkAll为false的时候,状态为半选中。
 indeterminate为false,checkAll为true的时候,状态为全选中。
<el-table
     ref="multipleDatasetTable"
     class="dt_table"
     v-loading="datasetLoading"
     :data="datasetList"
     max-height="500"
     stripe
     highlight-current-row
     @current-change="currentDatasetChange"  
>
       <template slot="empty">
          <el-empty
           :image-size="75"
           :image="require('@/assets/empty.png')"
           description="暂无数据"
           style="padding: 100px 0"
           ></el-empty>
        </template>
        <el-table-column align="center" width="45">
            <template #header>
               <el-checkbox
                 v-model="datasetHeader.checkAll"
                 :indeterminate="datasetHeader.indeterminate"
                 :disabled="datasetList.length==0"
                 @change="datasetHeaderChoose(datasetHeader)"
               />
            </template>
            <template slot-scope="scope">
               <el-checkbox
                 v-model="scope.row.checkAll"
                 :indeterminate="scope.row.indeterminate"
                 @change="datasetChoose(scope.row)"
                />
            </template>
       </el-table-column>
</el-table>
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值