Jin*_*nov 10 html javascript vue.js vuejs2
当与对象数组一起使用时,v-model与复选框一起使用有效:v-for
new Vue({
el: '#example',
data: {
names: [
{ name: 'jack', checked: true },
{ name: 'john', checked: false },
{ name: 'mike', checked: false }
]
}
})Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.13/vue.min.js"></script>
<div id='example'>
<div v-for="(item, index) in names" :key="index">
<input type="checkbox" :id="item.name" v-model="item.checked">
<label :for="item.name">{{ item.name }} {{ item.checked }}</label>
</div>
</div>Run Code Online (Sandbox Code Playgroud)
当与对象的属性v-model一起使用时,与复选框一起使用不起作用:v-for
new Vue({
el: '#example',
data: {
names: {
jack: true,
john: false,
mike: false
}
}
})Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.13/vue.min.js"></script>
<div id='example'>
Does not work with v-for:
<div v-for="(value, key, index) in names" :key="index">
<input type="checkbox" :id="key" v-model="value">
<label :for="key">{{ key }} {{ value }}</label>
</div>
But it does work without v-for:
<br>
<input type="checkbox" id="jack" v-model="names.jack">
<label for="jack">jack</label>
<br>
<input type="checkbox" id="john" v-model="names.john">
<label for="john">john</label>
<br>
<input type="checkbox" id="mike" v-model="names.mike">
<label for="mike">mike</label>
<br>
And it even changes the checkbox above!
</div>Run Code Online (Sandbox Code Playgroud)
但是v-model与复选框一起v-for使用可以处理对象的属性,而没有!
这是为什么?我该如何解决?我真的需要v-for来工作,对象的属性!
编辑:我不需要检查值的数组,我需要更改对象属性的确切值。
Ric*_*sen 11
语法v-model="names[key]"将起作用,请参阅动态 v-model 指令
new Vue({
el: '#example',
data: {
names: {
jack: true,
john: false,
mike: false
}
}
})Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.13/vue.min.js"></script>
<div id='example'>
Does not work with v-for:
<div v-for="(value, key, index) in names" :key="index">
<input type="checkbox" :id="key" v-model="names[key]">
<label :for="key">{{ key }} {{ value }}</label>
</div>
But it does work without v-for:
<br>
<input type="checkbox" id="jack" v-model="names.jack">
<label for="jack">jack</label>
<br>
<input type="checkbox" id="john" v-model="names.john">
<label for="john">john</label>
<br>
<input type="checkbox" id="mike" v-model="names.mike">
<label for="mike">mike</label>
<br>
And it even changes the checkbox above!
</div>Run Code Online (Sandbox Code Playgroud)