当 v-radio 处于活动状态和禁用状态时如何初始化无线电组

问题描述

我使用的是 vuetify 和 vue js 2.6 我有一个包含 5 个 v-radio 的 v-radio-group,我有 2 个 v-checkBox,我使用这些复选框来启用/禁用单选框:
1. 问题一:当其中一个单选框处于禁用和激活状态时,如何初始化v-radio-group。
2.我想切换复选框,只应选中两个中的一个而不是两个

感谢所有帮助并响应我的请求 谢谢… hier 是代码

<template>
  <div> 
    <v-radio-group v-model="radiogroup">
      <v-radio label="Radio 1" value="radio1"></v-radio>
      <v-radio label= "Radio 2"value="radio2"></v-radio>
      <v-radio
        label="Radio 3"
        value="radio3"
        :disabled="check2 || check1"
      ></v-radio>
      <v-radio
        label="Radio 4"
        value="radio4"
        :disabled="check2"
      ></v-radio>
      <v-radio
        label="Radio 5"
        value="radio5"
        :disabled="disableradio"
      ></v-radio>
    </v-radio-group>
    <v-checkBox label="Check 2" v-model="check2"></v-checkBox>
    <v-checkBox label="Check 1" v-model="check1"></v-checkBox>
  </div>
</template>
<script>
export default {
  data() {
    return {
      disableradio: true,check1: false,check2: false,radiogroup: "radio1",},};
</script>

解决方法

更新,因为我没有完全回答问题。

对于第一个问题,你能详细说明一下吗?当一个被禁用和激活时,初始化是什么意思?

对于第二个问题,您正在描述一个无线电组(只能激活一个复选框)。但是,如果您真的希望它与复选框一起使用,以下内容可能会有所帮助:

<v-checkbox label="Check 1" v-model="check1" @change="check2=false"></v-checkbox>
<v-checkbox label="Check 2" v-model="check2" @change="check1=false"></v-checkbox>

由于详细的 q1 导致的额外更新:

<template>
  <div> 
    <v-radio-group v-model="radiogroup">
      <v-radio label="Radio 1" value="radio1"></v-radio>
      <v-radio label= "Radio 2"value="radio2"></v-radio>
      <v-radio label="Radio 3" value="radio3" :disabled="check2 || check1"></v-radio>
      <v-radio label="Radio 4" value="radio4" :disabled="check2" ></v-radio>
      <v-radio label="Radio 5" value="radio5" :disabled="disableradio"></v-radio>
    </v-radio-group>
    <v-checkbox label="Check 2" v-model="check2" @change="checkboxHandler("check2")></v-checkbox>
    <v-checkbox label="Check 1" v-model="check1" @change="checkboxHandler("check1")></v-checkbox>
  </div>
</template>
<script>
export default {
  data() {
    return {
      disableradio: true,check1: false,check2: false,radiogroup: "radio1",},methods: {
      checkboxHandler(type) {
        if (type === "check1") this.check2 = false
        if (type === "check2") this.check1 = false

        if (this.radiogroup === "radio3" && (this.check1 || this.check2) ) this.radiogroup = "radio1"
        if (this.radiogroup === "radio4" && this.check2 ) this.radiogroup = "radio1"
      }
    },};
</script>
,

我不同意 Jens 的 v-model 声明。根据 vuejs docs v-model 是在表单输入上创建双向数据绑定的指令。

post 完美地解释了为什么你应该使用 v-model。

tldr : v-model 本质上是一样的:

    <input
       v-bind:value="something"
       v-on:input="something = $event.target.value">

所以为了回答你的问题,我的建议是简单地禁用一个 v-checkbox,如果一个已经被选中。

    <v-checkbox label="Check 2" v-model="check2" :disabled="check1"></v-checkbox>
    <v-checkbox label="Check 1" v-model="check1" :disabled="check2"></v-checkbox>