vue+element-ui 树形table 最后一层有复选框
时间: 2023-11-16 10:04:08 浏览: 226
vue基于element-ui的三级CheckBox复选框功能的实现代码
Vue Element-UI的树形Table组件可以通过设置show-checkbox属性来显示复选框,但是默认情况下只会在非叶子节点上显示复选框,如果需要在最后一层也显示复选框,可以通过以下两种方式实现:
1. 使用slot-scope自定义单元格内容
在template中使用slot-scope自定义单元格内容,通过判断当前行是否为最后一层来显示复选框。
```html
<el-table :data="data" style="width: 100%">
<el-table-column type="selection" width="55"></el-table-column>
<el-table-column prop="name" label="名称"></el-table-column>
<el-table-column label="操作">
<template slot-scope="{ row }">
<el-checkbox v-if="isLastLevel(row)" v-model="checkedNodes" :label="row.id"></el-checkbox>
</template>
</el-table-column>
</el-table>
```
在methods中定义isLastLevel方法来判断当前行是否为最后一层:
```javascript
methods: {
isLastLevel(row) {
return !row.children || row.children.length === 0;
}
}
```
2. 使用tree-node-key属性指定叶子节点的key值
在使用树形数据时,可以通过tree-node-key属性指定叶子节点的key值,然后在show-checkbox属性中使用leaf-only来显示所有叶子节点的复选框。
```html
<el-table :data="data" :tree-props="{children: 'children', hasChildren: 'hasChildren', id: 'id', label: 'name', key: 'id'}" :tree-node-key="'id'" :show-checkbox="true" :leaf-only="true" style="width: 100%">
<el-table-column prop="name" label="名称"></el-table-column>
<el-table-column label="操作">
<template slot-scope="{ row }">
<el-checkbox v-model="checkedNodes" :label="row.id"></el-checkbox>
</template>
</el-table-column>
</el-table>
```
在这种方式下,只需要在template中直接显示复选框即可,不需要判断当前行是否为最后一层。
阅读全文