element-ui多选框组件切换报错问题

问题描述:页面定义了三个多选框,根据不同的条件展示不同的<div>下的多选框,但是由班级切换到课程的时候页面报错。

页面源码如下:

<div v-if="formModel.radio == 2" >
      <el-form-item prop="class" :label="$t('system.count.class')">
        <el-select v-model="formModel.classByClass" clearable @change="classByStudentChange">
          <el-option
            v-for="item in classOptions"
            :key="item.classNo"
            :value="item.classNo"
            :label="item.className"></el-option>
        </el-select>
      </el-form-item>
      <el-form-item prop="course" :label="$t('system.count.course')">
        <el-select
          v-model="formModel.courseByClass"
          multiple
          filterable
          clearable>
          <el-option
            v-for="item in courseOptions"
            :key="item.courseId"
            :label="item.courseName"
            :value="item.courseId"></el-option>
        </el-select>
      </el-form-item>
    </div>
    <div v-if="formModel.radio == 3">
      <el-form-item prop="course" :label="$t('system.count.course')">
        <el-select v-model="formModel.courseBycourse" clearable multiple filterable>
          <el-option
            v-for="item in courseOptions"
            :key="item.courseId"
            :label="item.courseName"
            :value="item.courseId"></el-option>
        </el-select>
      </el-form-item>
    </div>

排查发现只要加上multiple属性就会报错,百度筛查发现是因为selection在单选切换多选的时候数据类型由字符切换成数组类型导致的TypeError,但是这明明是两个多选框为什么会出现这种情况呢?

我想起来在VUE的风格指南中有一段内容

 那么原因就很可能是因为没有加上key导致的相同类型的元素的冲突,于是在每个div上加上key,

<div v-if="formModel.radio == 2" key="class">
...
<div>
<div v-if="formModel.radio == 3" key="course">
...
<div>

这样就没有问题了

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值