【无标题】Vue+element Ui 考试系统 考试过程中多选题答案存放问题

在线考试系统考生考试前端设计中,我将考生的答案全部存到一维数组中

 studentAnswer:{
        studentId:0,//存放考生id
        examId:0,  //存放考试id
        titleAnswer:[],  //存放考生的全部答案
        titleId:[],
      },

通过v-for 获取每道题目的作答
在这里插入图片描述
但是这样存放多选题时遇到了问题
多选题使用的是 el-checkbox 组件

              <el-checkbox-group v-model="studentAnswer.titleAnswer[index]"  > 
                <el-checkbox :label="item.option_a"></el-checkbox>
                <el-checkbox :label="item.option_b"></el-checkbox>
                <el-checkbox :label="item.option_c"></el-checkbox>
                <el-checkbox :label="item.option_d"></el-checkbox>
            </el-checkbox-group>

这样显然是不对的,因为多选框需要绑定的是数组,而studentAnswer.titleAnswer[index]只能存放字符串

所以为了能存放多选题 进行了以下尝试(可以直接跳到第三种,第三种可行,前两中是错误尝试,只是记录一下)

第一种

需要绑定数组,就创建一个数组,专门用来存放多选题

 data() {
    return {
      mulanswer:[]
      省略其他
      }
      }

但是这样存放的答案是自增的,存在
1、所有多选题的答案存放混在一起了
2、回去修改答案的时候,它会直接存放在数组末尾,所以一道题还不是挨着存放的
eg:0 1 2是第一道多选题答案
2 4 7 8是第二道多选题答案
在这里插入图片描述

第二种

直接在 el-checbox 中添加事件@mouseleave=“mulleave(index)”

   mulleave(index){
    this.studentAnswer.titleAnswer[index]=JSON.stringify(this.mulanswer)
    this.mulanswer=[]
  },

在鼠标离开这道多选题时将数组中的答案转成字符串存到studentAnswer.titileAnswer[index]中
但是这样有个很大的问题,因为每次mulanswer会清空,所以考生界面不会显示自己选中的答案。

第三种

上述两种是我的尝试,都不可行,最后想到了使用二维数组存放

  mulanswer:[[]],

多选框绑定一维数组存放答案

  <el-checkbox-group v-model="mulanswer[index]"   >
                    <el-checkbox :label="item.option_a"></el-checkbox>
                    <el-checkbox :label="item.option_b"></el-checkbox>
                    <el-checkbox :label="item.option_c"></el-checkbox>
                    <el-checkbox :label="item.option_d"></el-checkbox>
                </el-checkbox-group>

需要注意的是

使用二维数组时,每一行都要新建一个一维数组,不然会报错。
此处由于我使用index(也就是第几题) 为索引存放答案的 ,所以为了方便 ,我建立数组的长度是所有题目的长度,(我也只能想到这样)

initMuiAnswer()
{
for(let index=0;index<this.allTitle.length;index++)
{
this.mulanswer[index] = new Array();
}
},

结果如下
在这里插入图片描述
0 1 2是多选题 成功存放了多选题答案

最后使用JSON.stringify 把数组转成字符串再存到我的答案数组即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值