Vben框架动态生成可编辑Table
在Vben(Vue Ben)框架中,动态生成可编辑的Table可以通过使用a-table
组件结合a-input
、a-select
等输入组件来实现。以下是一个简化的例子,展示了如何创建一个可编辑的表格:
<template>
<div>
<a-table :dataSource="data" :columns="columns" :pagination="false">
<template v-slot:name="{ record, index }">
<a-input v-model:value="record.name" @change="handleChange(index)" />
</template>
<template v-slot:age="{ record, index }">
<a-input-number v-model:value="record.age" @change="handleChange(index)" />
</template>
<template v-slot:gender="{ record, index }">
<a-select v-model:value="record.gender" @change="handleChange(index)">
<a-select-option value="male">Male</a-select-option>
<a-select-option value="female">Female</a-select-option>
</a-select>
</template>
</a-table>
</div>
</template>
<script>
import { defineComponent, reactive, toRefs } from 'vue';
export default defineComponent({
setup() {
const state = reactive({
data: [
{
key: '1',
name: 'John Doe',
age: 32,
gender: 'male',
},
// ... more data
],
columns: [
{
title: 'Name',
dataIndex: 'name',
key: 'name',
slots: { customRender: 'name' },
},
{
title: 'Age',
dataIndex: 'age',
key: 'age',
slots: { customRender: 'age' },
},
{
title: 'Gender',
dataIndex: 'gender',
key: 'gender',
slots: { customRender: 'gender' },
},
// ... more columns
],
});
function handleChange(index) {
console.log('Row data changed: ', index);
}
return { ...toRefs(state), handleChange };
},
});
</script>
在这个例子中,我们定义了一个包含name
、age
和gender
字段的数据源,并为每个字段创建了对应的编辑组件(a-input
用于文本输入,a-input-number
用于数字输入,a-select
用于选择)。每当输入字段的值发生变化时,handleChange
函数会被调用,并且可以执行任何需要的数据处理或者验证操作。
评论已关闭