Element Ui 的 radio组件没有取消选中功能,而实际场景却是需要做取消选中的,如果不小心选了一个后就不能取消了,就会存在操作问题,那如何实现呢?
思路:
可以利用点击事件,和v-model方式,在点击后判断与已选中的数值一样,就清空v-model绑定的值,达到取消选中的效果
代码:
<el-table-column v-if="curTemplate.formType === 3" label="评价情况" width="200"> <template slot-scope="{ row, $index }"> <el-radio-group v-model="row.evalOptions" style="line-height: 18px;"> <el-radio @click.native.prevent="evalOptionClick($event,$index)" v-for="(item, index) in row.chooseNames ? row.chooseNames.split(','):''" :key="index" :label="index.toString()" > {{ item }} <span style="display: none">{{ index }}</span> </el-radio> </el-radio-group> </template> </el-table-column>
evalOptionClick(val, index) { const showList = this.onlyShowQuestion ? this.onlyQuestionImplementEvalShowList : this.implementEvalShowList const curVal = $(val.srcElement).find('span').html() // 点击时 值与选中的值相同 则置空该值 表示取消选中 if (showList[index].evalOptions === curVal) { showList[index].evalOptions = '' return } else { showList[index].evalOptions = curVal } }
ps:$event取到的值是MouseEvent对象,通过jquery方式获取到其中的value值
发表评论