详解为element-ui的Select和Cascader添加弹层底部操作按钮
如下图这样把操作按钮放在select弹层底部是一种挺常见的设计方式
但是很遗憾element-ui没有给我们提供这个插槽,我们想实现这个功能只能重写组件或者等官方更新吗,答案当然是否定的!
花了一点时间通过一个函数实现这个功能,支持el-select和el-cascader,效果点击预览
其实逻辑很简单,把下面这段html插入到指定位置就行了
新增商品分类
我这里直接使用el-cascader的样式,实际使用中这段html可以根据自己的需求修改
上代码,在methods写入这段函数
/**
*为element-ui的Select和Cascader添加弹层底部操作按钮
*@paramvisible
*@paramrefName设定的ref名称
*@paramonClick底部操作按钮点击监听
*/
visibleChange(visible,refName,onClick){
if(visible){
constref=this.$refs[refName];
letpopper=ref.$refs.popper;
if(popper.$el)popper=popper.$el;
if(!Array.from(popper.children).some(v=>v.className==='el-cascader-menu__list')){
constel=document.createElement('ul');
el.className='el-cascader-menu__list';
el.style='border-top:solid1px#E4E7ED;padding:0;color:#606266;';
el.innerHTML=`
商品分类管理
`;
popper.appendChild(el);
el.onclick=()=>{
//底部按钮的点击事件点击后想触发的逻辑也可以直接写在这
onClick&&onClick();
//以下代码实现点击后弹层隐藏不需要可以删掉
if(ref.toggleDropDownVisible){
ref.toggleDropDownVisible(false);
}else{
ref.visible=false;
}
};
}
}
},
el-select跟el-cascader的调用方式一致,这里以el-cascader举例
visibleChange(v,'cascader',cascaderClick)" ref="cascader" />
如果调用的地方比较多,也可以像我一样封装成mixins
constselectBottomAction={
methods:{
/**
*为element-ui的Select和Cascader添加弹层底部操作按钮
*@visible-change="v=>selectBottomAction(v,{ref:'select',label:'商品分类',icon:'el-icon-menu',click:goodsTypeManagement})"
*@paramvisible
*@paramref设定的ref名称
*@paramclick底部操作按钮点击监听
*@paramlabel标题
*@paramicon图标class
*@paramarrow是否显示箭头
*/
selectBottomAction(visible,{ref,click,label='',icon='',arrow=false}){
if(visible){
const_ref=this.$refs[ref];
letpopper=_ref.$refs.popper;
if(popper.$el)popper=popper.$el;
if(!Array.from(popper.children).some(v=>v.className==='el-cascader-menu__list')){
constel=document.createElement('ul');
el.className='el-cascader-menu__list';
el.style='border-top:solid1px#E4E7ED;padding:0;color:#606266;';
el.innerHTML=`
${icon?``:''}
${label}
${arrow?' ':''}
`;
popper.appendChild(el);
el.onclick=()=>{
click&&click();
if(_ref.toggleDropDownVisible){
_ref.toggleDropDownVisible(false);
}else{
_ref.visible=false;
}
};
}
}
},
},
};
exportdefaultselectBottomAction;
提示:后期可能会随着官方版本升级失效,谨慎使用
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。