Javascript 如何使用vue js创建多个输入字段repeater?
我想创建一个动态表单字段,以便使用vue js添加多个名称 样本输出-> 这是我的htmlJavascript 如何使用vue js创建多个输入字段repeater?,javascript,jquery,html,vuejs2,Javascript,Jquery,Html,Vuejs2,我想创建一个动态表单字段,以便使用vue js添加多个名称 样本输出-> 这是我的html <div id="app"> <h1>Vue JS Multiple Fields Repeater</h1> <div class="border" v-for="field in field1"> <input v-model="field.value" placeholder="Enter First Name">
<div id="app">
<h1>Vue JS Multiple Fields Repeater</h1>
<div class="border" v-for="field in field1">
<input v-model="field.value" placeholder="Enter First Name">
<input v-model="field2.value" placeholder="Enter Last Name">
</div>
<button @click="AddField">
New Field
</button>
<pre>{{ $data | json }}</pre>
</div>
我在这里创建了一个JSFIDLE->
问题是每次我添加新字段时只能填充第一个名称。如何对姓氏字段也执行此操作?我们如何才能在这里完成棘手的部分?在您当前的尝试中,将两个输入绑定到同一个对象是很困难的,这样可以正确地绑定
名字和姓氏
newvue({
el:“#应用程序”,
数据:{
字段:[{第一个:'',最后一个:'}],
},
已创建:函数(){
},
方法:{
AddField:函数(){
this.fields.push({first:'',last:''});
}
}
});代码>
.border{
边框:1px纯黑;
填充:3倍;
边缘底部:5px;
}
Vue JS多字段转发器
新领域
{{$data | json}
您对此产生问题的原因是javascript的一些限制及其对反应性的影响
关于理想解决方案,我同意另一种回答。但是,如果要使用两个数组,这里还有一个选项
重要部分包括:
v-for=“i in field1.length”
这将循环0到长度
然后删除对象中值的使用,使用this.field1.push(“”)
设置,并使用field1[i]
html:
您的第一个输入模型在v-model=“field.value”
中缺少1
,您没有field
数据,但field1
数据来自field1
阵列非常感谢您,这就是我想要的。回答得好!也帮助我通过Vue了解了更多:)
new Vue({
el: '#app',
data: {
field1: [] ,
field2: []
},
created: function() {
this.field1.push({ value: '' });
this.field2.push({ value: '' });
},
methods: {
AddField: function () {
this.field1.push({ value: '' });
this.field2.push({ value: '' });
}
}
});
<div id="app">
<h1>Vue JS Multiple Fields Repeater</h1>
<div class="border" v-for="i in field1.length">
<input v-model="field1[i]" placeholder="Enter First Name">
<input v-model="field2[i]" placeholder="Enter Last Name">
</div>
<button @click="AddField">
New Field
</button>
<pre>{{ $data | json }}</pre>
</div>
new Vue({
el: '#app',
data: {
field1: [] ,
field2: []
},
created: function() {
this.field1.push('');
this.field2.push('');
},
methods: {
AddField: function () {
this.field1.push('');
this.field2.push('');
}
}
});