Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/408.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Vuetify:复选框显示未选中状态时已选中,反之亦然_Javascript_Vue.js_Vuetify.js_Nuxt.js - Fatal编程技术网

Javascript Vuetify:复选框显示未选中状态时已选中,反之亦然

Javascript Vuetify:复选框显示未选中状态时已选中,反之亦然,javascript,vue.js,vuetify.js,nuxt.js,Javascript,Vue.js,Vuetify.js,Nuxt.js,让我简化一下问题: 我的Vue.js模板中有一个复选框(使用Vuetify组件): 但是我得到了相反的结果:当它被检查时,它说它是未检查的,反之亦然 这是什么原因造成的?如何解决 在选中或取消选中复选框之前,会触发您获得的console.log。因此,情况就是这样: 用户单击复选框 Javascript执行侦听器 如果未在任何侦听器中取消该事件,它将继续并将复选框设置为选中或未选中 您可以使用的是收听change事件: 第二件事是,通过使用document.getElementById('joh

让我简化一下问题:

我的Vue.js模板中有一个复选框(使用Vuetify组件):

但是我得到了相反的结果:当它被检查时,它说它是未检查的,反之亦然

这是什么原因造成的?如何解决


在选中或取消选中复选框之前,会触发您获得的console.log。因此,情况就是这样:

  • 用户单击复选框
  • Javascript执行侦听器
  • 如果未在任何侦听器中取消该事件,它将继续并将复选框设置为选中或未选中
  • 您可以使用的是收听
    change
    事件:

    第二件事是,通过使用
    document.getElementById('john')
    您依赖于这里的DOM来检查复选框是否被选中。为什么不依赖于所选的
    属性?为了避免过于频繁地刷新DOM,在执行完所有JS后会更新DOM。如果要等待DOM更新,可以使用
    $nextTick
    帮助程序:

    <v-checkbox 
       v-model="selected" 
       label="John"
       value="John"
       id ="john" 
       @click.native="checkit">
    </v-checkbox> 
    
    checkit: function() {
      let elt = document.getElementById('john')
      if(elt.checked) {
        console.log('checked')
      } else {
        console.log('unchecked')
      }
    }
    
    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')
    }