v-for v-model双向绑定不成功
时间: 2023-11-22 08:49:11 浏览: 111
在Vue.js中,使用v-for指令时,如果同时使用v-model指令进行双向绑定,可能会出现双向绑定失效的问题。这是因为v-for指令会创建一个新的作用域,而v-model指令默认会尝试在父级作用域中查找变量,导致无法正确绑定。解决这个问题的方法有两种:
1.使用计算属性或者方法来获取和设置v-model的值,这样就可以避免作用域的问题。例如:
```html
<div v-for="(item, index) in items" :key="index">
<input :value="getItemValue(item)" @input="setItemValue(item, $event.target.value)">
</div>
<script>
export default {
data() {
return {
items: [
{ value: 'foo' },
{ value: 'bar' },
{ value: 'baz' }
]
}
},
methods: {
getItemValue(item) {
return item.value
}, setItemValue(item, value) {
item.value = value
}
}
}
</script>
```
2.使用Vue.js提供的特殊属性$set来更新数组中的元素,这样可以触发响应式更新。例如:
```html
<div v-for="(item, index) in items" :key="index">
<input v-model="item.value">
</div>
<script>
export default {
data() {
return {
items: [
{ value: 'foo' },
{ value: 'bar' },
{ value: 'baz' }
]
}
},
mounted() {
this.items.forEach((item, index) => {
this.$set(this.items, index, item)
})
}
}
</script>
```
阅读全文