【问题标题】:Vuejs - How do I change the property's value when Checkbox is checked/unchecked and update the sameVuejs - 选中/取消选中复选框时如何更改属性值并更新相同
【发布时间】:2021-05-07 18:44:04
【问题描述】:

我有两个组件,我正在尝试更新组件,并且我正在尝试根据选中或未选中的复选框更改属性值。我无法更改该属性的值。

这是我的代码:

ComponentA.vue

 **Template**

 <div class="column" v-for="car in cars">
    <label class="label">
      <input type="checkbox" v-model="carsSelected" @change="onChange" >
      {{ car }}
    </label>
  </div>

  **Script**

    data () {
       return {
         carsSelected: {},
         cars: {
          hyundai,
          maruthi,
          audi,
        }
      }
      ...
        onChange(){
      this.$emit('input', this.carsSelected)   .--->  For updating
    }

ComponenrB.vue

     <component-a v-model="fourWheeler.brands" />
     ...
     fourWheeler: {}

fourWheeler.brands 的外观如下:

     **It is an object**
       
       {
         hyundai: false,
         maruti: false,
         audi: true,
       }

我想根据选中或未选中更改汽车品牌的值,即fourWheeler.brands,如果未选中复选框则为false,如果选中则为true。请让我知道如何更新值和更好的绑定方式。

【问题讨论】:

标签: vue.js input checkbox binding


【解决方案1】:

由于复选框仅指示是否选中,因此您不能仅使用一个复选框选择多个值,但是您可以使用您的汽车对象来呈现选项:

<template>
  <main>
   <label v-for="(value,key) in cars" :key="key" :for="key">
     {{key}}
     <input  type="checkbox" :id="key" v-model="cars[key]" @change="onChange"/>
   </label>
 </main>
</template>

<script>
 export default {
  data(){
   return {
     cars: {
         hyundai:false,
         maruthi:false,
         audi:false,
     }
   }
 },
 methods:{
   onChange(){
     console.log(this.cars)
   }
 }
 }
</script>

如您所见,我正在遍历汽车属性并为每个属性(每辆汽车)显示一个复选框,然后 v-model 正在更改汽车对象的特定属性,所以如果您这样做onChange 中汽车对象的 console.log 现在您可以看到带有选择的汽车对象。值得注意的是,我更改了汽车对象,因此它包含汽车名称和选定的真/假。

【讨论】:

  • 谢谢,这确实提供了很多信息,但是,我在 ComponentB 中使用了 ComponentA,而汽车品牌对象(您已经硬编码)实际上来自fourWheeler.brands,所以在这里我想知道如何可以通过选中复选框来完成,我希望输入值从 false 更改为 true,反之亦然
  • 如果cars 是外部属性,则更改您的组件A,使其接收这些品牌而不是硬编码数据。当您说“通过选中复选框,我希望输入值从 false 更改为 true 并取消选中反之亦然”时,这是使用 v-model 和事件“更改”对任何更改做出反应的复选框的正常行为,所以,什么是不适合你?
猜你喜欢
  • 1970-01-01
  • 2019-03-04
  • 2019-10-30
  • 1970-01-01
  • 2021-06-24
  • 2021-05-05
  • 2018-06-21
  • 1970-01-01
  • 2014-06-16
相关资源
最近更新 更多