我有一个附加了 v-model 的输入文本字段,每次有人点击“添加”按钮时,都会将另一个输入文本添加到 DOM 中,并附加相同的 v-model。我以为我会得到一个 v-model 值的数组,但它只获取第一个 v-model 输入的值:
<div id="app">
<div id="references">
<input v-model="references" type="text">
</div>
<button @click="addReference">Add</button>
</div>
我附加到 dom 的 html 是由 addReference 方法触发的:
addReference: function(e) {
e.preventDefault();
console.log(this.references);
var inputEl = '<input v-model="references" type="text">';
$('#references').append(inputEl);
}
这是 Vuejs 做不到的吗?有没有用 Vuejs 从动态 dom 元素收集值的不同方法?
new Vue({
el: "#app",
data: {
references: "text"
},
methods: {
addReference: function(e) {
e.preventDefault();
console.log(this.references);
var inputEl = '<input v-model="references" type="text">';
$('#references').append(inputEl);
}
}
})
input {
display: block;
margin: 1px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.16/vue.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="app">
<div id="references">
<input v-model="references" type="text">
</div>
<button @click="addReference">Add</button>
</div>
原文由 jlos 发布,翻译遵循 CC BY-SA 4.0 许可协议
您正在考虑 DOM,这是一个很难改掉的习惯。 Vue 建议你先处理它的数据。
在您的确切情况下很难说,但我可能会使用
v-for
并制作一个finds
的数组,以便在我需要更多时推送。这是我设置实例的方式:
以下是我设置模板的方式:
虽然,我会尝试使用
index
之外的其他东西key
。这是上面的演示: https ://jsfiddle.net/crswll/24txy506/9/