uni-app:点击变色的答题模板(多选+单选)

代码段:

 <view class="result-tips">
          <view class="msg">
            <view class="blue"></view>
            <view class="msg-tip">蓝色为正确答案</view>
          </view>
          <view class="msg">
            <view class="red"></view>
            <view class="msg-tip">红色为自选答案</view>
          </view>
 </view>


 <view class="question">
            <!--题目 格式: 1/20 题目内容(多选单选)  (正确答案)-->
            <view class="question-title">
              {{ dataItem.questionNo }}/{{ dataItem.totalNum }}
              {{
                dataItem.isMulti
                    ? '(多选)'
                    : '(单选)'
              }}
              {{ dataItem.title }}
              ({{ result ? resultData.correctOptions : '' }})
            </view>

           <!--选项和答案 颜色有三种:未选择的答案,自选答案,正确答案-->
            <view
                :class="right[alph[key]] ? 'choose right-active' : choose[alph[key]] ? 
                'choose choose-active' : 'choose'"
                @tap="radioChange(alph[key], dataItem)"
                v-for="(option, key) in dataItem.option"
                :key="key"
            >
              {{ alph[key] }}: {{ option }}
            </view>
    </view>

data数据

      //问题数据
      dataItem: {
      //是否多选
        isMulti: 0,
      //题目选项
        option: ['', '', '', '']
      },
      alph: ['A', 'B', 'C', 'D'],
      //选中的选项
      choose: {A: false, B: false, C: false, D: false},
      //正确的的选项
      right: {A: false, B: false, C: false, D: false},
      //最后选中的结果
      final: []
 // 题目点击事件
    radioChange(key, data) {
      //多选
      if (data.isMulti) {
        this.choose[key] = !this.choose[key];
        if (this.choose[key]) {
          this.final.push(key);
        } else {
          this.final.splice(this.final.indexOf(key), 1);
        }
        console.log(this.final);
      } else {
        this.choose = {
          A: false,
          B: false,
          C: false,
          D: false
        };
        this.choose[key] = true;
        this.final = [key];
      }
    },

实现效果

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值