vue3.0 radio單選框,獲取當前項(每一項)的value值

前言

本文爲vue 3.0語法,2.x語法從以下鏈接進入另一篇文章。

vue 2.x 寫法:vue radio單選框,獲取當前項(每一項)的value值

附上vue3.0文檔:組合式API中文文檔

vue 3.0 示例

本文使用了lable關聯選中,實際使用中如果不需要,直接將循環語句 v-for 寫在 input標籤上就可以

1、使用v-for循環的radio單選框
01)需要注意的是,這是使用的是 change 事件,而不是 click 點擊事件

<template>
  <div>
    <p>當前選中:{{ radioVal }}</p>
    <label v-for="(item, index) in radioData" :key="index">
      <input
        type="radio"
        v-model="radioVal"
        :value="item.value"
        @change="getRadioVal"
      />
      {{ item.value }}
    </label>
  </div>
</template>

<script>
import { ref, reactive } from 'vue';
export default {
  setup() {
    const radioData = reactive([
      { value: '全部' },
      { value: '部分' },
      { value: '零散' }
    ]);

    // 用於設置默認選中項
    const radioVal = ref('全部');

    // 單選框change事件
    function getRadioVal() {
      setTimeout(() => {
        console.log(radioVal.value);
      }, 1);
    }

    return {
      radioData,
      radioVal,
      getRadioVal
    };
  }
};
</script>

2、不使用v-for循環的radio單選框
01)需要注意的是,這是使用的是 change 事件,而不是 click 點擊事件

<template>
  <div>
    <p>當前選中:{{ radioVal }}</p>
    <label><input v-model="radioVal" type="radio" value="全部" @click="getRadioVal">全部</label>
    <label><input v-model="radioVal" type="radio" value="部分" @click="getRadioVal">部分</label>
    <label><input v-model="radioVal" type="radio" value="零散" @click="getRadioVal">零散</label>
  </div>
</template>
<script>
import { ref } from 'vue';
export default {
  setup() {
    // 用於設置默認選中項
    const radioVal = ref('全部');

    // 單選框change事件
    function getRadioVal() {
      setTimeout(() => {
        console.log(radioVal.value);
      }, 10)
    }

    return {
      radioVal,
      getRadioVal
    };
  }
};
</script>

點擊每一項獲得當前項的value值,使用 v-for 和不使用 v-for 實現的效果是一樣的
這裏就不分開寫效果圖了

在這裏插入圖片描述

遇到問題:
單選框change事件(getRadioVal),打印 radioVal.value 不是改變後的數據,暫時加上一個定時器可以延時獲取到正確值,後續更新。

如果本篇文章對你有幫助的話,很高興能夠幫助上你。

當然,如果你覺得文章有什麼讓你覺得不合理、或者有更簡單的實現方法又或者有理解不來的地方,希望你在看到之後能夠在評論裏指出來,我會在看到之後儘快的回覆你。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章