for循环中的Vue动态表单元素
Vue dynamic form elements in for loop
在 vue 组件中,我想在 for 循环中生成动态输入元素并将它们绑定到 data.form 元素。
data() {
return {
form: {}
}
}
<b-form-checkbox v-model="form[key]['amount']" type="checkbox" :value="key"></b-form-checkbox>
我该如何处理,我试过的方法:
form.amount[key] // is working, but not really the best data structure, and the array is populated with null values for each for loop entry on init ...
form[key]['amount'] // not working
// the working example I mentioned is structured this way
form: {
amount: [],
}
也许有人可以帮我解决这个问题...
只需为表单字段定义一个空数组,例如return { formFields: [] }
。然后在此数组中添加与要在屏幕上呈现的输入字段一样多的值:
<template>
<form>
<input v-for="(field,index) in formFields" :key="index" v-model="fields[index]" type="text">
</form>
</template>
<script>
export default
{
data()
{
return {
formFields: []
};
},
mounted()
{
for (let i = 1; i <= 10; i++) this.formFields.push('');
}
}
</script>
如果您需要不同类型的输入字段 - 您将需要使用对象数组而不是字符串,并将字段类型编码为每个对象中的 属性。
在 vue 组件中,我想在 for 循环中生成动态输入元素并将它们绑定到 data.form 元素。
data() {
return {
form: {}
}
}
<b-form-checkbox v-model="form[key]['amount']" type="checkbox" :value="key"></b-form-checkbox>
我该如何处理,我试过的方法:
form.amount[key] // is working, but not really the best data structure, and the array is populated with null values for each for loop entry on init ...
form[key]['amount'] // not working
// the working example I mentioned is structured this way
form: {
amount: [],
}
也许有人可以帮我解决这个问题...
只需为表单字段定义一个空数组,例如return { formFields: [] }
。然后在此数组中添加与要在屏幕上呈现的输入字段一样多的值:
<template>
<form>
<input v-for="(field,index) in formFields" :key="index" v-model="fields[index]" type="text">
</form>
</template>
<script>
export default
{
data()
{
return {
formFields: []
};
},
mounted()
{
for (let i = 1; i <= 10; i++) this.formFields.push('');
}
}
</script>
如果您需要不同类型的输入字段 - 您将需要使用对象数组而不是字符串,并将字段类型编码为每个对象中的 属性。