【Vue】a-radio-group单选框数字与字符串回显问题

一、本章诉求

根据后端接口返回数字或字符串,来配置Ant Design of Vue中a-radio-group单选框的回显问题,注意value中的取值是不一样的。

二、代码示例

纯数字回显

data定义的变量
  sizeRadio:1024,//定义为数字

<a-radio-group button-style="solid" class="sizeRadioGroup" @change="changeSize"
                     v-model="sizeRadio">
        <a-radio-button :value='512'>
          512
        </a-radio-button>
        <a-radio-button :value='768'>
          768
        </a-radio-button>
        <a-radio-button :value="1024">
          1024
        </a-radio-button>
        <a-radio-button :value='2048'>
          2048
        </a-radio-button>

      </a-radio-group>

数字字符串回显

data定义的变量
sizeRadio:'1024', //定义为字符串


<a-radio-group button-style="solid" class="sizeRadioGroup" @change="changeSize"
                     v-model="sizeRadio">
        <a-radio-button :value='"512"'>
          512
        </a-radio-button>
        <a-radio-button :value='"768"'>
          768
        </a-radio-button>
        <a-radio-button :value='"1024"'>
          1024
        </a-radio-button>
        <a-radio-button :value='"2048"'>
          2048
        </a-radio-button>

      </a-radio-group>
``` <template> <div id="dynamicForm"> <el-form :model="formData" ref="formRef"> <div v-for="(question, index) in questions" :key="index"> <!-- 单选框 --> <el-form-item v-if="question.question_type === 1" :label="question.question_text"> <el-radio-group v-model="formData[question.question_code]"> <el-radio v-for="option in question.options" :key="option.option_code" :value="option.option_code">{{ option.option_text }}</el-radio> </el-radio-group> </el-form-item> <!-- 复选框 --> <el-form-item v-else-if="question.question_type === 2" :label="question.question_text"> <el-checkbox-group v-model="formData[question.question_code]"> <el-checkbox v-for="option in question.options" :key="option.option_code" :value="option.option_code">{{ option.option_text }}</el-checkbox> </el-checkbox-group> </el-form-item> </div> <el-button type="primary" @click="submit">提交</el-button> </el-form> </div> </template> <script lang='ts' setup> // formFields.value.forEach((field) => { // formData[field.model] = field.default; // }); // const submit = () => { // console.log("提交的数据:", formData); // }; import { ref, reactive, onMounted } from 'vue'; const urlParams = new URLSearchParams(window.location.search); const formFields = ref([]); const questions = ref < Array < any >> ([]); const formData = reactive( [{ "question_code": "que_155073352741031936", "question_type": 1, "option_code": "opt155073352741031938" }, { "question_code": "que_155074051071676416", "question_type": 2, "option_code": ["opt155074051071676417"] }] ); if (urlParams.has('msg')) { let msgObj = JSON.parse(decodeURIComponent(urlParams.get('msg'))); formFields.value = msgObj.questions questions.value = msgObj.questions // console.log(JSON.stringify(msgObj.questions)); // console.log(formFields.value) } function submit() { let answers = []; for (let q of questions.value) { if (q.question_type === 1) { // 对于单选项 const selectedOptionCode = formData[q.question_code]; if (selectedOptionCode !== undefined && selectedOptionCode !== '') { answers.push({ question_code: q.question_code, question_type: q.question_type, option_code: selectedOptionCode }); } } else if (q.question_type === 2) { // 对于多选题 const selectedOptionsCodes = formData[q.question_code]; if (Array.isArray(selectedOptionsCodes) && selectedOptionsCodes.length > 0) { answers.push({ question_code: q.question_code, question_type: q.question_type, option_code: selectedOptionsCodes // 将所选项作为数组存储 }); } } }; console.log("提交的答案:", JSON.stringify(answers)); } </script> <style> </style>```不出来
最新发布
03-08
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sunywz

~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值