1.ElementUI官网级Cascader 级联选择器
这样的话效果是实现了,但是存在两个问题:
1、只能点击圆圈才能选中,点击文字 label 没有效果
2、点击圆圈后理想是自动收起下拉,但这个是点击下拉框之外的地方才可以收起。
2.以下就是我的解决办法
<el-cascader
// 一定要加ref属性稍后解决第二个问题
ref="refHandle"
v-model="uploadFileValue"
:options="options"
placeholder="试试搜索:我的上传"
filterable
clearable
:props="defaultParams"
style="width:100%;"
@change="handleChange">
</el-cascader>
defaultParams: {
label: 'name', // 键名
value: 'id', // 键值
children: 'sonNodeList', // 子节点
expandTrigger: 'hover', // 悬浮触发子节点所在DIV
checkStrictly: true, // 任选一级
},
其中,前三个根据自己后端返回的字段自行配置即可,第四个属性可根据需求悬浮触发或者点击触发
第一个问题的解决方法
mounted() {
//点击文本就让它自动点击前面的input就可以触发选择。但是因组件阻止了冒泡,暂时想不到好方法来触发。
//这种比较耗性能,暂时想不到其他的,能实现效果了。
setInterval(function() {
document.querySelectorAll(".el-cascader-node__label").forEach(el => {
el.onclick = function() {
if (this.previousElementSibling) this.previousElementSibling.click();
};
});
}, 1000);
},
第二个问题的解决方法
// 上传文件结构下拉选中事件
handleChange(value){
this.folderId = value[value.length-1]
if (this.$refs.refHandle) {
this.$refs.refHandle.dropDownVisible = false; //监听值发生变化就关闭它
}
},