前言
本文爲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 不是改變後的數據,暫時加上一個定時器可以延時獲取到正確值,後續更新。
如果本篇文章對你有幫助的話,很高興能夠幫助上你。
當然,如果你覺得文章有什麼讓你覺得不合理、或者有更簡單的實現方法又或者有理解不來的地方,希望你在看到之後能夠在評論裏指出來,我會在看到之後儘快的回覆你。