我正在开发一个应用程序,我使用Vue 2
作为javascript框架,
在v-for
循环中我需要将循环的计数器绑定到元素的v-model
名称,这是我的代码:
<div v-for="n in total" class="form-group">
<input type="hidden" id="input_id" :name="'input_name_id[' + n + ']'" v-model="form.parent_id_n" />
</div>
我需要n
作为循环的计数器,例如它应该是第一个元素:
<div class="form-group">
<input type="hidden" id="input_id" :name="'input_name_id[1]" v-model="form.parent_id_1" />
</div>
name attribute
绑定有效,但我不知道如何使v-model
正常工作?
答案 0 :(得分:32)
将v-model
与form.parent_id[n]
一起使用:
form
应该是数据属性。form.parent_id
应该是一个数组。然后您可以执行以下操作:
<div id="demo">
<div v-for='n in 3'>
<input v-model="form.parent_id[n]">
</div>
<div v-for='n in 3'>
{{ form.parent_id[n] }}
</div>
</div>
通过设置vue实例,如:
var demo = new Vue({
el: '#demo',
data: {
form: {
parent_id: []
}
}
})
查看此fiddle以获取有效工作示例。
答案 1 :(得分:7)
实现此目的的另一种方法是使用访问对象属性的括号表示法。
<div v-for="n in total" class="form-group">
<input type="hidden"
id="input_id"
:name="'input_name_id[' + n + ']'"
v-model="form['parent_id_' + n ]" />
</div>
答案 2 :(得分:0)
假设input_name_id
是一个字符串,您需要做的是:name="'input_name_id' + n"
这是一个有效的solution
答案 3 :(得分:0)
重复的文本提交了10次,并为每个文本分别设置了v-model
<v-text-field
v-for="(n,index) in 10"
:key="index"
v-model="pricing.name[n]"
color="info"
outline
validate-on-blur
/>
存储数据
data() {
return {
pricing:{
name: [],
}
}