javascript - Vuetify:复选框在未选中时显示状态已选中,反之亦然
问题描述
让我简化一下问题:
我的 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')
}
}
但我得到了相反的结果:当它被选中时,它说它没有被选中,反之亦然。
是什么原因造成的以及如何解决?
解决方案
您获得的 console.log 在选中或取消选中复选框的操作之前被触发。所以这就是发生的事情:
- 用户点击复选框
- Javascript 执行监听器
- 如果事件没有在任何侦听器中取消,它会继续并将复选框设置为选中或未选中。
您可以使用的是监听change
事件:https ://codepen.io/anon/pen/VGOMPB?editors=1011
第二件事是,通过使用document.getElementById('john')
你依赖这里的 DOM 来检查复选框是否被选中。为什么不依赖selected
房产?DOM 会在所有 JS 执行完毕后更新,以免刷新 DOM 过于频繁。如果要等待 DOM 更新,可以使用$nextTick
helper: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')
}
推荐阅读
- php - 在chartJS中显示从数据库中提取的整数作为%
- git - git - 按时间戳忽略文件
- flutter - 选择项目后如何不关闭 PopUpMenuButton?
- php - 如何从 api 响应中获取特定值到 php 变量?
- flutter - 用户如何在 textfield 或 textformfield 中看到整个文本?
- php - 带有 GET 的多个 if 语句在带有 XPath 的 PHP 中无法正确输出
- javascript - 像其他资产一样通过 CDN URL 从动态导入中加载块
- php - 查询两个不同表中两个字段的 SUM PHP
- python - 不显示缺失值matplotlib
- python - pyenv 在 macos 上给出 shopt 命令未找到错误