1.需求:
element-ui 需使用el-radio单选框(是,否),每个选项支持勾选后取消勾选
2解决方法:
-
给vue绑定组件的时候,需要加一个native,不加的话会被认为是要监听item里面的自定义事件
-
加prevent,是用来阻止默认事件的,相当于Jquery里面的event.preventDefault()方法阻止元素发生默认的行为
@click.native.prevent="row.isRequired = row.isRequired === true ? null : true"
@click.native.prevent="row.isRequired = row.isRequired === false ? null : false"
<el-form-item label="" prop="requiredFields" :rules="[{ validator: validateRequiredFields, trigger: 'change' }]">
<el-table :data="fieldList" class="field-table">
<el-table-column prop="fieldName" label="录入字段" width="200" />
<el-table-column label="是否录入">
<template #default="{ row }">
<el-radio-group v-model="row.isRequired" @change="validateForm" class="no-focus">
<el-radio :label="true" @click.native.prevent="row.isRequired = row.isRequired === true ? null : true">是</el-radio>
<el-radio :label="false" @click.native.prevent="row.isRequired = row.isRequired === false ? null : false">否</el-radio>
</el-radio-group>
</template>
</el-table-column>
</el-table>
</el-form-item>
如果存在样式问题(点击时候有模糊边缘样式),修改如下:
::v-deep .no-focus .el-radio__inner {
box-shadow: none !important;
}