上面的回答中代码:editable="true" 不生效,且官网里也没有这个参数
时间: 2023-08-12 17:09:12 浏览: 175
android 2.2 API chinese edition
非常抱歉,我的回答有误。Vue ElementUI 的 table 组件并没有 `editable` 属性,这是我犯了错误。对于 Vue ElementUI 的 table 组件,可以使用 `scopedSlots` 属性来自定义单元格的内容,从而实现编辑功能。
以下是一个例子,可以在单元格内编辑数据:
```html
<template>
<el-table :data="tableData">
<el-table-column label="姓名" prop="name">
<template slot-scope="{ row }">
<span v-if="!isEditing(row)">{{ row.name }}</span>
<el-input v-else v-model="row.name"></el-input>
</template>
</el-table-column>
<el-table-column label="年龄" prop="age">
<template slot-scope="{ row }">
<span v-if="!isEditing(row)">{{ row.age }}</span>
<el-input v-else v-model.number="row.age"></el-input>
</template>
</el-table-column>
<el-table-column label="操作">
<template slot-scope="{ row }">
<el-button v-if="!isEditing(row)" type="primary" @click="edit(row)">编辑</el-button>
<el-button v-else type="success" @click="save(row)">保存</el-button>
<el-button v-if="isEditing(row)" type="danger" @click="cancel(row)">取消</el-button>
</template>
</el-table-column>
</el-table>
</template>
<script>
export default {
data() {
return {
tableData: [
{ name: '张三', age: 18 },
{ name: '李四', age: 20 },
{ name: '王五', age: 22 },
],
editingRow: null,
};
},
methods: {
isEditing(row) {
return row === this.editingRow;
},
edit(row) {
this.editingRow = row;
},
save(row) {
this.editingRow = null;
},
cancel(row) {
Object.assign(row, this.tableData.find(item => item === row));
this.editingRow = null;
},
},
};
</script>
```
在这个例子中,我们使用 `scopedSlots` 属性来自定义单元格的内容。在模板中,我们根据当前行是否处于编辑状态来显示不同的内容。如果当前行处于编辑状态,我们显示一个 `el-input` 组件来让用户编辑数据;如果当前行不处于编辑状态,我们显示该行的数据。
在操作列中,我们添加了三个按钮:编辑、保存和取消。当用户点击编辑按钮时,我们将该行的编辑状态设置为 true,从而显示 `el-input` 组件来让用户编辑数据。当用户点击保存按钮时,我们将该行的编辑状态设置为 false,从而隐藏 `el-input` 组件。当用户点击取消按钮时,我们将该行的数据还原成原始数据,并将该行的编辑状态设置为 false,从而隐藏 `el-input` 组件。
希望这次回答能够解决你的问题。如果还有什么不清楚的地方,请随时提出。
阅读全文