使用Element-Ui-Plus时,对select-v2进行自定义操作,可以自定义添加筛选后无数据的选项进行添加。

问题背景:

在最近的开发需求中,需要对element-ui-plus的select-v2的组件进行自定义的改装,即在搜索状态完成后,
如果发现无搜索内容,可进行自定义的进行添加当前的select的input框内。

问题原因:

select-v2提供了一个属性方法,即allow-create的属性, 为了使 allow-create 正常工作,
filterable 的值必须为 true。但是我们发现,使用这个属性后,如果输入的是已经存在的
值,它也会默认进行创建,这不是我们想要的效果。如图所示;
在这里插入图片描述
通过调查研究发现,可以使用如下的方法进行解决。

解决思路:

使用自定义的空状态的插槽,设置一个添加按钮,监听该按钮,当发现无搜索数据时,点击添加按钮,就把
当前的input的值替换为搜索框输入的值。

代码片段:

html:

                <el-select-v2 ref="selectAppType" >
                    <template #empty>
                        <div :class="[app.e('select-add')]">
                            <span>
                                无搜索结果
                            </span>
                            <el-button @click="selectValAdd" type="primary">
                                添加
                            </el-button>
                        </div>
                    </template>
                </el-select-v2>

js:

import {
    
     ref, reactive, toRefs, onMounted } from "vue";
const selectAppType = ref();
//增加自定义下拉框的值
const selectValAdd = () => {
    
    
    let eleInput = document.getElementsByClassName("el-select-v2__input-calculator")[0];
    let inputVal = eleInput.innerHTML; //通过绑定dom对象获取所需要的input的值
    console.log(inputVal)  //输出获取的input的值,该步可以对所需的赋值的对象进行赋值
    selectAppType.value.expanded = false;  //关闭下拉框
}

实现效果:

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/m54584mnkj/article/details/128674002
今日推荐