<template>
<v-container
class="px-0"
fluid
>
<v-radio-group v-model="radioGroup">
<v-radio
v-for="n in 3"
:key="n"
:label="`Radio ${n}`"
:value="n"
></v-radio>
</v-radio-group>
</v-container>
</template><script>
export default {
data () {
return {
radioGroup: 1,
}
},
}
</script>v-radio-group как-то отслеживает v-radio внутри и возвращает выбранный вариант. Собственно, вот и появился вопрос как сделать такое же поведение, вместо нескольких v-radio с v-model на одну переменную?
props: [ 'value' ],
provide() {
return {
radioGroup: this,
};
},props: [ 'value' ],
inject: [ 'radioGroup' ],<input
type="radio"
:value="value"
:checked="radioGroup.value === value"
@change="radioGroup.$emit('input', value)"
>props: [ 'modelValue' ],
emits: [ 'update:modelValue' ],
setup(props, { emit }) {
provide('radioGroupValue', computed({
get: () => props.modelValue,
set: v => emit('update:modelValue', v),
}));
},props: [ 'value' ],
setup() {
return {
radioGroupValue: inject('radioGroupValue'),
};
},<input
type="radio"
:value="value"
v-model="radioGroupValue"
>