数据源tableData: [ { name: 'John', age: 25, gender:0 }, { name: 'Jane', age: 30, gender: -1 }, ],下拉框数据源exlist:[{label:"谷",value:-1},{label:"平",value:0},{label:"峰",value:1}]给一个el-table的完整Demo,界面age属性需调用一个方法乘以0.5,el-table内容可编辑,可选择下拉框
时间: 2024-04-15 16:28:45 浏览: 91
以下是一个完整的 Element UI 的表格(el-table)的示例,其中内容可编辑,包含下拉框选择的功能,并且界面的 `age` 属性会调用一个方法乘以 0.5:
```html
<template>
<div>
<el-table :data="tableData" :show-summary="false">
<el-table-column prop="name" label="Name" :editable="true">
<template slot-scope="scope">
<span v-if="scope.row !== editingRow">{{ scope.row.name }}</span>
<el-input v-else v-model="scope.row.name"></el-input>
</template>
</el-table-column>
<el-table-column prop="age" label="Age" :editable="true">
<template slot-scope="scope">
<span v-if="scope.row !== editingRow">{{ calculateAge(scope.row.age) }}</span>
<el-input v-else v-model.number="scope.row.age"></el-input>
</template>
</el-table-column>
<el-table-column prop="gender" label="Gender" :editable="true">
<template slot-scope="scope">
<span v-if="scope.row !== editingRow">{{ getGenderLabel(scope.row.gender) }}</span>
<el-select v-else v-model="scope.row.gender">
<el-option v-for="item in exlist" :key="item.value" :label="item.label" :value="item.value"></el-option>
</el-select>
</template>
</el-table-column>
<!-- 其他列定义 -->
<el-table-column label="Actions">
<template slot-scope="scope">
<el-button @click="handleEdit(scope.row)">Edit</el-button>
<el-button @click="handleSave(scope.row)" v-if="scope.row === editingRow">Save</el-button>
<el-button @click="handleCancel(scope.row)" v-if="scope.row === editingRow">Cancel</el-button>
</template>
</el-table-column>
</el-table>
</div>
</template>
<script>
export default {
data() {
return {
tableData: [
{ name: 'John', age: 25, gender: 0 },
{ name: 'Jane', age: 30, gender: -1 },
// 其他行数据
],
exlist: [
{ label: "谷", value: -1 },
{ label: "平", value: 0 },
{ label: "峰", value: 1 }
],
editingRow: null // 正在编辑的行,默认为null
};
},
methods: {
calculateAge(age) {
return age * 0.5; // 将年龄乘以0.5
},
getGenderLabel(value) {
const item = this.exlist.find(item => item.value === value);
return item ? item.label : '';
},
handleEdit(row) {
this.editingRow = row;
},
handleSave(row) {
// 处理保存编辑的逻辑,例如发送请求保存数据到后端
this.editingRow = null; // 清除编辑状态
},
handleCancel(row) {
// 处理取消编辑的逻辑,例如恢复原始数据
this.editingRow = null; // 清除编辑状态
}
}
};
</script>
```
在这个示例中,根据你提供的数据源,对 `age` 属性调用了 `calculateAge` 方法,将其乘以 0.5,并在表格中显示计算后的值。下拉框的数据源通过 `exlist` 属性提供,使用 `v-for` 循环来渲染下拉选项。在编辑状态下,可以修改单元格中的文本、数字或下拉框的选项。点击 "Save" 按钮会触发 `handleSave` 方法来保存编辑的数据,点击 "Cancel" 按钮会触发 `handleCancel` 方法来取消编辑并恢复原始数据。
注意:这只是一个简单的示例,你可能需要根据自己的实际需求进行修改和扩展,如增加校验、验证等功能。
阅读全文