我正在 v-for 循环中渲染一个输入字段,并在该输入中使用 v-model 来获取输入的值,但是当我输入任何一个输入时,该值会输入到每个文本字段中。
我在这个小提琴中复制了我的问题
<div id="app">
<h2>Todos:</h2>
<ol>
<li v-for="todo in todos">
<label>
<input type="text" v-model="score">
<del v-if="todo.done">
{{ todo.text }}
</del>
<span v-else>
{{ todo.text }}
</span>
</label>
</li>
</ol>
</div>
new Vue({
el: "#app",
data: {
score: [],
todos: [
{ text: "Learn JavaScript", done: false },
{ text: "Learn Vue", done: false },
{ text: "Play around in JSFiddle", done: true },
{ text: "Build something awesome", done: true }
]
},
})
Run Code Online (Sandbox Code Playgroud)
是的,很明显,这是因为您在 1 个值上绑定了 X 输入字段。您可能想要的是将 score[] 作为数组放入,用于该用途
<li v-for="(todo,index) in todos">
<label>
<input type="text" v-model="score[index]">
<del v-if="todo.done">
{{ todo.text }}
</del>
<span v-else>
{{ todo.text }}
</span>
</label>
</li>
Run Code Online (Sandbox Code Playgroud)
https://jsfiddle.net/o9awn47v/
小智 5
在v-model="score"中使用时,分数被视为单个变量。
您可以在待办事项中添加分数,并在输入上对其进行 v 建模,这样您就可以轻松引用每个待办事项的分数值。
<div id="app">
<h2>Todos:</h2>
<ol>
<li v-for="todo in todos">
<label>
<input type="text" v-model="todo.score">
<del v-if="todo.done">
{{ todo.text }}
</del>
<span v-else>
{{ todo.text }}
</span>
</label>
</li>
</ol>
</div>
new Vue({
el: "#app",
data: {
todos: [
{ text: "Learn JavaScript", done: false, score: '' },
{ text: "Learn Vue", done: false, score: '' },
{ text: "Play around in JSFiddle", done: true, score: '' },
{ text: "Build something awesome", done: true, score: '' }
]
},
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10281 次 |
| 最近记录: |