elementui el-select设置默认值且默认值不允许删除
参考网址:【记录】el-select 已选项禁止删除 el-select编辑时已选择的项不允许删除 、element-ui里面的下拉多选框 el-select 时,默认值不可删除
在项目中 el-select 设置默认值且默认值不允许删除和取消选中
通过vue全局指令实现该要求
export default { update(el, bindings) { const [defaultValues, selectValue] = bindings.value // 需要隐藏的标签索引 const indexs = [] selectValue.map((item, index) => { defaultValues.map(defaultItem => { if (item == defaultItem) { indexs.push(index) } }) }) const dealStyle = function(tags) { tags.forEach((el, index) => { if ( indexs.includes(index) && ![...el.classList].includes('select-tag-close-none') ) { el.style.display = 'none' // close 图标隐藏掉 } }) } // 设置样式隐藏close icon let tags = el.querySelectorAll('.el-tag__close') if (tags.length === 0) { // 初始化tags为空处理 setTimeout(() => { let tagTemp = el.querySelectorAll('.el-tag__close') dealStyle(tagTemp) }) } else { setTimeout(() => { dealStyle(tags) }) } } }
指令文件夹下新建index.js文件
import defaultSelect from './select/defaultSelect' const install = function(Vue) { // Vue.directive('xxx', xxx) // 其他指令 Vue.directive('defaultSelect', defaultSelect) } if (window.Vue) { Vue.use(install) } export default install
在main.js 导入指令
import directive from './directive' Vue.use(directive)
在页面中使用指令
// 设置已选择的不可删除 selectIdList:选中值数组[1,2,3] form.selectId选中值id字符串,逗号分割 1,2,3 v-default-select="[selectIdList,form.selectId]" // 设置已选择的不可操作 :disabled=“selectIdList.includes(dict.value)”
<el-select ref="efficacyIdSelect" v-model="form.selectId" v-default-select="[selectIdList,form.selectId]" multiple filterable placeholder="请选择" class="select-width" @keydown.native.delete.capture.stop.prevent @change="$forceUpdate()"> <el-option v-for="dict in dict.List" :key="dict.value" :label="dict.label" :value="dict.value" :disabled="selectIdList.includes(dict.value)" /> </el-select> data(){ return { form:{}, selectIdList:[] } }