vue2中 el-table 可以通过设置type=“expand” 来设置展开项 但是我想没有子数据的行数展开项按钮变为禁用 应该怎么做
时间: 2024-03-22 07:41:21 浏览: 46
可以通过在 `el-table` 组件中使用 `slot-scope` 属性来自定义每一行的内容,然后在每一行中根据是否有子数据来决定是否显示展开按钮,并且在没有子数据的行中禁用展开按钮。具体步骤如下:
1. 在 `el-table` 组件中添加 `slot-scope` 属性,指定每一行的内容:
```html
<el-table :data="tableData">
<el-table-column prop="name" label="姓名"></el-table-column>
<el-table-column prop="age" label="年龄"></el-table-column>
<el-table-column type="expand">
<template slot-scope="scope">
<!-- 判断当前行是否有子数据,如果有则显示展开按钮,否则禁用展开按钮 -->
<el-button :disabled="!scope.row.children" type="text" @click="handleExpand(scope.row)">展开</el-button>
</template>
</el-table-column>
</el-table>
```
2. 在数据源 `tableData` 中添加一个 `children` 字段,用来表示该行是否有子数据:
```javascript
data() {
return {
tableData: [
{ name: '张三', age: 18, children: [{ name: '张三的子数据1', age: 20 }, { name: '张三的子数据2', age: 22 }] },
{ name: '李四', age: 20 },
{ name: '王五', age: 22, children: [{ name: '王五的子数据1', age: 24 }, { name: '王五的子数据2', age: 26 }] }
]
}
}
```
3. 在点击展开按钮时,根据当前行的数据来处理展开的逻辑:
```javascript
methods: {
handleExpand(row) {
// 根据当前行的数据来处理展开的逻辑
console.log(row)
}
}
```
这样就可以实现没有子数据的行数展开项按钮变为禁用的效果了。
阅读全文