我对v-switch有问题。我在一页上有一堆。当我检查其中任何一个时,它将返回错误值。
<v-switch
:name="['leave_it_' + listItem.asset_id]"
@change="setAction(listItem)"
></v-switch>
这是我的剧本。
<script>
export default {
data() {
return {
updates: {
asset_id: [],
leave_it: {},
image: {},
description: {}
},
};
},
methods: {
setAction(listItem) {
var action = (document.querySelector('input[name="leave_it_' + listItem.asset_id + '"]:checked') ? "Leave it Alone" : "Take an Action");
this.$set(this.updates.leave_it, listItem.asset_id, action);
}
},
};
</script>
当我检查v-switch时,DOM元素变为
<input aria-checked="true" role="checkbox" type="checkbox" name="leave_it_1" value="">
但更新对象变为:
updates:
leave_it:
1:"Take an Action"
您可以看到,即使aria-checked为true,对象值也等于false值。
所以,请帮助我。
答案 0 :(得分:1)
使用v-switch
将v-model
绑定到data
值,然后使用它。
<v-switch
v-model='switchValue'
:name="['leave_it_' + listItem.asset_id]"
@change="setAction(listItem)"
>
</v-switch>
data: {
return {
switchValue: false
}
}
var action = this.switchValue ? "Leave it Alone" : "Take an Action";
此外,您可能会完全失去:name
。除了@change
,您还可以watch
switchValue
。这就是 Vue方式。
watch:{
theSwitch(newValue){
}
}
这里是绑定多个复选框的示例。
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js">
js ">
</script>
<div id="app">
<div v-for='i of count'>
<label>
Item {{i}}
<input v-model=checks[i] type='checkbox'></input>
</label>
</div>
<div>Values: {{checks}}</div>
</div>
<script>
var app = new Vue({
el: '#app',
data: {
count: 10,
checks: Array(10).fill(false),
},
watch: {
checks(value) {
console.log('value changed', value)
}
}
})
</script>