vue 在表单页面 根据子集合json 生成子表单 并且子表单还可以动态增加或者减少行数 然后把所有子表单的参数json 返回到页面
时间: 2024-02-24 14:57:24 浏览: 131
你可以使用 Vue 的 v-for 指令来遍历子集合 json,然后通过条件语句来判断生成需要的表单类型。
例如,如果你要生成一个输入框,可以使用以下代码:
```html
<div v-for="(field, index) in subset" :key="index">
<label>{{ field.label }}</label>
<input v-if="field.type === 'text'" type="text" v-model="field.value"/>
<input v-if="field.type === 'number'" type="number" v-model="field.value"/>
<input v-if="field.type === 'date'" type="date" v-model="field.value"/>
<select v-if="field.type === 'select'" v-model="field.value">
<option v-for="(option, i) in field.options" :key="i">{{ option }}</option>
</select>
</div>
```
上面的代码中,我们使用 v-for 遍历 subset,然后根据不同的 field.type 生成不同的表单元素。
如果你要让子表单动态增加或减少行数,可以给一个按钮绑定一个点击事件,在事件处理程序中添加或删除一个 subset 中的元素。
最后,你可以在提交表单时将所有子表单的参数 json 组合成一个大的 json 对象,然后将其返回到页面。
```javascript
methods: {
addField() {
this.subset.push({ type: 'text', label: 'New Field', value: '' })
},
removeField(index) {
this.subset.splice(index, 1)
},
submit() {
const formData = { mainField: this.mainField, subset: this.subset }
// 发送 formData 到服务器
}
}
```
阅读全文