让我简化一下问题:
我的Vue.js模板中有一个复选框(使用Vuetify组件):
<v-checkbox
v-model="selected"
label="John"
value="John"
id ="john"
@click.native="checkit">
</v-checkbox>
checkit()
方法代码为:
checkit: function() {
let elt = document.getElementById('john')
if(elt.checked) {
console.log('checked')
} else {
console.log('unchecked')
}
}
但是我得到相反的结果:当它被选中时,它表示未选中,反之亦然。
这是什么原因以及如何解决?
答案 0 :(得分:5)
您获取的console.log在选中或取消选中复选框之前被触发。这就是发生的情况:
您可以使用的是监听change
事件:https://codepen.io/anon/pen/VGOMPB?editors=1011
第二件事是,通过使用document.getElementById('john')
,您将依靠此处的DOM来检查该复选框是否被选中。您为什么不依赖selected
属性?为了避免过于频繁地刷新DOM,在执行完所有JS之后更新DOM。如果要等待DOM更新,可以使用$nextTick
帮助器:https://codepen.io/anon/pen/BOewpg?editors=1011
checkit: function () {
this.$nextTick(() => {
let elt = document.getElementById('john')
if(elt.checked) {
console.log('checked')
} else {
console.log('unchecked')
}
})
//this.selected.push('Vuejs')
//this.selected.push('Paris')
}