element ui表格多选功能将选中的每条数据添加到新的数组,然后被选中过的数据选择按钮置灰
时间: 2024-02-16 11:04:31 浏览: 80
好的,针对你的问题,我可以给出以下代码示例:
1. 在表格中添加多选框列,并绑定数据:
```html
<el-table-column type="selection" v-model="selectedRows"></el-table-column>
```
其中,`selectedRows` 是一个数组,用于存储被选中的行数据。
2. 在表格中添加操作列,用于操作被选中的行数据:
```html
<el-table-column label="操作">
<template slot-scope="scope">
<el-button type="text" :disabled="isSelected(scope.row)" @click="handleSelect(scope.row)">选择</el-button>
</template>
</el-table-column>
```
其中,`isSelected` 方法用于判断当前行是否被选中,如果被选中则返回 `true`,否则返回 `false`。`handleSelect` 方法用于处理选择操作,将选中的行数据添加到新的数组中。
3. 在 Vue 实例中添加 `selectedRows` 和操作方法:
```js
data() {
return {
tableData: [...], // 表格数据
selectedRows: [] // 被选中的行数据
}
},
methods: {
isSelected(row) {
return this.selectedRows.some(item => item.id === row.id);
},
handleSelect(row) {
this.selectedRows.push(row);
}
}
```
其中,`isSelected` 方法使用 `Array.prototype.some` 方法判断当前行是否被选中,`handleSelect` 方法使用 `Array.prototype.push` 方法将选中的行数据添加到 `selectedRows` 数组中。
4. 在 `isSelected` 方法中判断当前行是否被选中,并设置选择按钮的禁用状态:
```js
isSelected(row) {
const selectedIds = this.selectedRows.map(item => item.id); // 获取已选中行的 id 数组
return selectedIds.includes(row.id); // 判断当前行的 id 是否在已选中行的 id 数组中
}
```
在模板中,可以使用 `:disabled="isSelected(scope.row)"` 将选择按钮的禁用状态绑定到 `isSelected` 方法返回的结果上。
这样,就实现了在表格中添加多选框列,并将被选中的行数据添加到新的数组中,同时禁用已选中行的选择按钮的功能。
阅读全文