【问题标题】:Vue multiple checkboxes with binding in componentVue多个复选框与组件中的绑定
【发布时间】:2021-07-09 21:14:54
【问题描述】:

我知道如何将多个复选框绑定到 Vue 中的数组。但是当我尝试将复选框放入它们自己的组件并使用 v-model 绑定到数组时,它似乎不起作用。有人知道为什么吗?

CheckboxSelection.vue

<template>
  <div  v-for="(check,index) in checks" :key="index">
    <input  v-model="model"
            :value="check.value"
            :id="check.id"
            type="checkbox" />
  </div>
</template>

<script>
export default {
  props: {
    value: Array
  },
  data(){
    return {
      model: this.value,
      checks: [
        {
          id: 1,
          label: 'Check 1',
          value: 'check1'
        },
        {
          id: 2,
          label: 'Check 2',
          value: 'check2'
        }
      ]
    }
  },
  watch: {
    model: function(val) {
      this.$emit("input", val)
    }
  },
}
</script>

用法:

<CheckboxSelection v-model="selection"></CheckboxSelection>

【问题讨论】:

    标签: vue.js vuejs3 vue-script-setup


    【解决方案1】:

    在 vue 3 中,value 属性已更改为 modelValue,并且发出的事件 input 已更改为 update:modelValue

    export default {
      props: {
        modelValue: Array
      },
    emits:["update:modelValue"],
      data(){
      ....
      },
      watch: {
        model: function(val) {
          this.$emit("update:modelValue", val)
        }
      },
    }
    

    脚本设置语法请查看我的回答here

    【讨论】:

    • 我刚刚意识到清除绑定值(在我的示例中称为“选择”)不会清除复选框状态(尽管 modelValue 似乎是空的) - 你知道解决方案吗?
    猜你喜欢
    • 1970-01-01
    • 2020-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-04
    • 1970-01-01
    • 2021-05-15
    • 1970-01-01
    相关资源
    最近更新 更多