element配置动态表单,根据类型配置校验、输入框类型、回显以及自动生成表单
在使用Element UI时,可以通过v-for指令动态渲染表单项,并根据不同的类型配置不同的验证规则、输入框类型及回显内容。以下是一个简单的例子,演示如何根据不同的类型动态生成表单项:
<template>
<el-form :model="form" ref="form" label-width="80px">
<el-row :gutter="20" v-for="(item, index) in formItems" :key="index">
<el-col :span="6">
<el-form-item :label="item.label" :prop="item.prop" :rules="item.rules">
<el-input
v-if="item.type === 'input'"
v-model="form[item.prop]"
:placeholder="item.placeholder">
</el-input>
<el-select
v-else-if="item.type === 'select'"
v-model="form[item.prop]"
:placeholder="item.placeholder">
<el-option
v-for="option in item.options"
:key="option.value"
:label="option.label"
:value="option.value">
</el-option>
</el-select>
<!-- 其他类型的输入框可以在这里添加 -->
</el-form-item>
</el-col>
</el-row>
</el-form>
</template>
<script>
export default {
data() {
return {
form: {},
formItems: [
{
label: '用户名',
prop: 'username',
type: 'input',
placeholder: '请输入用户名',
rules: [
{ required: true, message: '请输入用户名', trigger: 'blur' },
{ min: 3, max: 10, message: '长度在 3 到 10 个字符', trigger: 'blur' }
]
},
{
label: '密码',
prop: 'password',
type: 'input',
placeholder: '请输入密码',
rules: [{ required: true, message: '请输入密码', trigger: 'blur' }],
// 回显处理
value: '********' // 假设从后端获取的密码需要回显
},
{
label: '状态',
prop: 'status',
type: 'select',
placeholder: '请选择状态',
options: [
{ label: '激活', value: 'active' },
{ label: '禁用', value: 'inactive' }
],
rules: [{ required: true, message: '请选择状态', trigger: 'change' }]
}
// 可以根据需要添加更多的formItems
]
};
}
};
</script>
在这个例子中,formItems
数组定义了表单项的列表,每个表单项包括标签文本label
、属性名称prop
、输入框类型type
、placeholder文本、验证规则rules
以及其他需要的选项数据(如下拉框的选项options
)。根据type
的不同,使用v-if
或v-else-if
来渲染不同类
评论已关闭