解决element-ui中级联选择器cascader存在的问题

在Vue.js项目中使用ElementUI的Cascader组件时,遇到数据回调不显示的问题。通过定义ref并利用getCheckedNodes()获取选中节点的pathLabels属性来解决此问题。此外,还探讨了如何处理Cascader的其他三个常见问题:允许选择任意级别、隐藏选项小圆圈、点击不折叠及修改样式穿透。

ElementUi中Cascader级联选择器 回调问题解决

1,在开发中使用了Cascader级联选择器,应用于省市联动的效果,发现问题:数据回调时不显示。
2,解决方法:使用ref进行回调处理。
ref需要在使用时定义,为了这里方便获取元素,通过getCheckedNodes()获取选中节点,并获取属性pathLabels返回一个集合,做进一步处理。
this.$refs.cityShow.presentText ="复制";// 首次手动复制
关键词是“presentText”

一、解决级联选择器cascader中的3问题

1、 可以选择cascader的任意级别

template:
<el-cascader :props="defaultProps"></el-cascader> 
 JS->data
 defaultProps: {
 				....
        checkStrictly:true
        ....
 },

2、 隐藏小圆圈问题

核心思路:通过css隐藏小圆圈,并扩大小圆圈的显示范围,然后设置visibility为hidden

.el-cascader-panel .el-radio {
  position: absolute;
  width:100%;
  height:100%;
  // border: 1px solid #f00;
  right:-10px;
}

.el-cascader-panel .el-radio .el-radio__input {
  visibility: hidden;
}

3、 解决点击某个级联项,不折叠问题(dropDownVisibl设置为false)

 template:
 <el-cascader ref="cascaderRef"@change="handleChange"></el-cascader>
 
 JS:
 //级联选择器选择完改变时触发
    async handleChange() {
     this.$refs.cascaderRef.dropDownVisible=false
    },

4、 修改第三方组件库样式穿透问题

修改第三方样式不生效问题解决方案
1.保留现在style scoped标签外,在新建立一个不带scoped的style
2.使用>>>实现样式穿透 不用less或sass情况下
3.使用/deep/实现  通常用在less或sass中
在使用element-ui选择器`el-cascader`时,若采用懒加载模式,添加`filterable`属性可能会出现无法搜索的问题,即输入内容后显示没有数据。不过,参考内容未提及具体的解决办法。一般来说,可尝试以下几种常见的解决思路: 1. **手动实现过滤逻辑**:不依赖`filterable`自带的过滤,在输入框输入内容时,通过监听输入事件,手动对级选择器的数据进行过滤。示例代码如下: ```vue <template> <div> <el-input v-model="searchKey" @input="handleSearch" placeholder="搜索"></el-input> <el-cascader :options="filteredOptions" v-model="selectedOptions" :props="cascaderProps" ></el-cascader> </div> </template> <script> export default { data() { return { searchKey: '', allOptions: [], // 原始的级选择器数据 filteredOptions: [], selectedOptions: [], cascaderProps: { lazy: true, lazyLoad: this.lazyLoadData } }; }, methods: { handleSearch() { // 手动过滤数据 this.filteredOptions = this.filterData(this.allOptions, this.searchKey); }, filterData(options, key) { return options.filter(option => { if (option.label.includes(key)) { return true; } if (option.children) { option.children = this.filterData(option.children, key); return option.children.length > 0; } return false; }); }, lazyLoadData(node, resolve) { // 懒加载数据的逻辑 // ... resolve(newOptions); } } }; </script> ``` 2. **检查数据格式**:确保级选择器的数据格式符合要求,特别是在懒加载时,返回的数据结构要与级选择器的`props`配置一致。 3. **更新组件版本**:检查element-ui的版本,尝试更新到最新版本,有时候一些已知的问题会在新版本中得到修复。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值