#vue.js
#vue.js
Вопрос:
У меня есть API, в котором есть варианты мужского и женского пола.Я хотел бы выбрать только один вариант пола за раз.Пол по умолчанию должен быть мужским.В настоящее время я пытаюсь использовать приведенный ниже код, но он не работает.
<div>
<label class="radio" v-for="(gender,index) in genders" :key="index">
<input type="radio"
@click="selectedGender('gender', gender.code)">
{{gender.description}}
</label>
</div>
data: {
gender: 'M',
genders:
[
{
code: "F",
description: "Female",
},
{
code: "M",
description: "Male",
},
],
methods: {
selectedGender(type,option){
if (type=== 'gender') {
this.gender = option;
}
Ответ №1:
Вместо того, чтобы использовать обработчики событий циклов и щелчков, вы можете просто использовать v-model
для привязки value
атрибута параметров радио к переменной ваших данных vue gender
:
<div>
<label for="male">
<input type="radio" id="male" value="M" v-model="gender">Male
</label>
<label for="female">
<input type="radio" id="female" value="F" v-model="gender">Female
</label>
</div>
data: {
gender: "M",
}
Ответ №2:
Вот ваше исправление :
<div>
<label class="radio" v-for="singleGender in genders">
<input type="radio" v-model="gender" v-bind:value="singleGender.code">
{{singleGender.description}}
</label>
</div>
<div>{{gender}}</div>
И вот ваши данные :
data: {
gender: "M",
genders: [
{
code: "F",
description: "Female"
},
{
code: "M",
description: "Male"
}
]
}
Нет необходимости использовать событие щелчка для сохранения его значения для модели.
Примечание: возможно, в селекторе шаблонов html не может отображаться в DOM, пока вы не отобразите его вручную.
Ответ №3:
Вот решение:
<template>
<div>
<label class="radio" v-for="(gender, index) in genders" :key="index">
<input type="radio" :value="gender.code" v-model="selGender" @click="selectedGender(gender.code)" />
{{ gender.description }}
</label>
</div>
</template>
<script>
export default {
name: "App",
components: {},
data() {
return {
selGender: "M",
genders: [
{
code: "F",
description: "Female",
},
{
code: "M",
description: "Male",
},
],
};
},
methods: {
selectedGender(option) {
this.selGender = option;
},
},
};
</script>