Rumah > hujung hadapan web > Soal Jawab bahagian hadapan > Mengapa kotak semak vue mengedit 0?

Mengapa kotak semak vue mengedit 0?

WBOY
Lepaskan: 2023-05-24 09:29:07
asal
553 orang telah melayarinya

vue ialah rangka kerja JavaScript yang popular untuk membina antara muka pengguna. Satu komponen biasa ialah kotak semak, yang membolehkan pengguna memilih antara berbilang pilihan. Walau bagaimanapun, kadangkala, apabila kita mengedit nilai kotak semak, ia menjadi 0, yang bukan seperti yang kita harapkan. Artikel ini akan membincangkan punca masalah ini dan cara menyelesaikannya.

Pertama, mari kita lihat penggunaan asas kotak pilihan dalam vue. Kita boleh menggunakan arahan model-v untuk mengikat nilai kotak pilihan:

<template>
  <div>
    <input type="checkbox" v-model="checked" />
    {{ checked }}
  </div>
</template>

<script>
export default {
  data() {
    return {
      checked: false
    }
  }
}
</script>
Salin selepas log masuk

Dalam contoh di atas, kami mengikat nilai kotak pilihan kepada atribut yang ditandakan. Apabila kotak semak ditandakan, nilai yang disemak adalah benar, jika tidak ia adalah palsu. Kami boleh memaparkan nilai yang disemak dalam templat untuk mengesahkan bahawa kotak pilihan berfungsi seperti yang kami harapkan.

Sekarang, kami cuba mengedit nilai kotak pilihan. Sebagai contoh, apabila pengguna mengklik pada kotak pilihan, kami mahu menetapkan nilainya kepada 1 dan bukannya benar. Kita boleh mencapainya dengan mendengar peristiwa perubahan kotak pilihan:

<template>
  <div>
    <input type="checkbox" v-model="checked" @change="handleChange" />
    {{ checked }}
  </div>
</template>

<script>
export default {
  data() {
    return {
      checked: false
    }
  },
  methods: {
    handleChange() {
      if (this.checked) {
        this.checked = 1
      } else {
        this.checked = 0
      }
    }
  }
}
</script>
Salin selepas log masuk

Dalam kod di atas, kami telah menambah pendengar acara perubahan pada kotak pilihan, apabila nilai kotak semak berubah, kaedah handleChange akan menjadi dipanggil. Dalam kaedah ini, kami menetapkan nilai yang disemak kepada 1 atau 0 masing-masing untuk mencapai keperluan kami.

Walau bagaimanapun, apabila kita menjalankan kod di atas, kita akan mendapati bahawa nilai kotak semak menjadi 0 dan bukannya 1. Ini kerana Vue menghuraikan nilai kotak semak sebagai rentetan, bukan nilai angka. Oleh itu, apabila menetapkan nilai 1 untuk diperiksa, ia dihuraikan sebagai rentetan "1", bukan nilai 1. Apabila nilai kotak semak ditukar kembali kepada nilai angka, ia menjadi 0 kerana "1" ditafsirkan sebagai nilai bukan benar dan ialah 0 apabila ditukar kepada nilai angka.

Jadi, bagaimana kita hendak menyelesaikan masalah ini? Satu cara ialah menggunakan kaedah parseInt untuk menukar rentetan kepada nilai angka:

<template>
  <div>
    <input type="checkbox" v-model="checked" @change="handleChange" />
    {{ checked }}
  </div>
</template>

<script>
export default {
  data() {
    return {
      checked: false
    }
  },
  methods: {
    handleChange() {
      if (this.checked) {
        this.checked = parseInt(1)
      } else {
        this.checked = parseInt(0)
      }
    }
  }
}
</script>
Salin selepas log masuk

Dalam kod di atas, kami telah menggunakan kaedah parseInt untuk menukar nilai angka 1 dan 0 kepada jenis angka. Dengan cara ini, apabila nilai kotak semak ditukar kembali kepada jenis angka, ia akan kekal 1 dan bukannya 0.

Penyelesaian lain ialah menggunakan jenis Nombor, yang boleh menukar rentetan kepada nilai angka:

<template>
  <div>
    <input type="checkbox" v-model="checked" @change="handleChange" />
    {{ checked }}
  </div>
</template>

<script>
export default {
  data() {
    return {
      checked: false
    }
  },
  methods: {
    handleChange() {
      if (this.checked) {
        this.checked = Number(1)
      } else {
        this.checked = Number(0)
      }
    }
  }
}
</script>
Salin selepas log masuk

Dalam kod di atas, kami telah menggunakan kaedah Nombor untuk menukar rentetan kepada angka taip . Dengan cara ini, apabila nilai kotak semak ditukar kembali kepada jenis angka, ia akan kekal 1 dan bukannya 0.

Untuk meringkaskan, apabila kita mengedit nilai kotak pilihan dalam vue, kita perlu ambil perhatian bahawa ia dihuraikan sebagai rentetan, bukan nilai angka. Untuk mengelakkan masalah ini, anda boleh menggunakan kaedah parseInt atau Number untuk menukar rentetan kepada jenis angka. Dengan cara ini, kita boleh berjaya mengedit nilai kotak semak!

Atas ialah kandungan terperinci Mengapa kotak semak vue mengedit 0?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan