iview组件表格复选框实现 选择一个其他复选框都禁用,取消选中,其他复选框取消禁用
时间: 2023-12-14 07:40:04 浏览: 30
可以通过监听复选框的change事件来实现:
1. 给表格组件添加一个selection-change事件
```html
<template>
<div>
<Table :data="tableData" border :columns="columns" @selection-change="handleSelectionChange"></Table>
</div>
</template>
```
2. 在事件处理函数中实现逻辑
```javascript
export default {
data() {
return {
tableData: [
{
name: '张三',
age: 18,
gender: '男',
checked: false
},
{
name: '李四',
age: 20,
gender: '女',
checked: false
},
{
name: '王五',
age: 22,
gender: '男',
checked: false
}
],
columns: [
{
title: '姓名',
key: 'name'
},
{
title: '年龄',
key: 'age'
},
{
title: '性别',
key: 'gender'
},
{
title: '选择',
key: 'checked',
render: (h, params) => {
return h('Checkbox', {
props: {
value: params.row.checked
},
on: {
'on-change': (value) => {
this.handleCheckboxChange(params.index, value)
}
}
})
}
}
]
}
},
methods: {
handleCheckboxChange(index, value) {
// 当选择一个时,禁用其他复选框
if (value) {
this.tableData.forEach((item, i) => {
if (i !== index) {
item.checked = false
item.disabled = true
}
})
} else {
// 取消选中时,其他复选框取消禁用
this.tableData.forEach((item) => {
item.disabled = false
})
}
},
handleSelectionChange(selection) {
// 取消选择时,所有复选框都取消禁用
if (selection.length === 0) {
this.tableData.forEach((item) => {
item.disabled = false
})
}
}
}
}
```
在方法handleCheckboxChange中,当选择一个复选框时,遍历所有复选框,将不是当前选择的复选框的checked属性设置为false,同时禁用其他复选框。当取消选择时,遍历所有复选框,将禁用属性都设置为false。
在方法handleSelectionChange中,当取消选择时,所有复选框都取消禁用。