elementUI关于checkgroup的一些坑

elementUI关于checkgroup不支持对象绑定的问题

今天在项目中遇到一个需求,就是动态渲染一个组合复选框使用的是elementUI里面的组件在这里插入图片描述
上面是官网的一个例子,其中const cityOptions = [‘上海’, ‘北京’, ‘广州’, ‘深圳’];也暗示了选项的局限性,(不支持数组复杂类型的绑定)
项目中的需求肯定是复杂数据类型的渲染:label动态绑定id之类的下面就是我项目中解决的代码。
当我看见为什么会单独的const一个数组作为全选数组对象时就有疑惑了,直接用后台返回来的数组对象作为全选的数组不香吗?
然后我跟着自己的想法写就入了坑。。。
下面是我所用到的数据
动态渲染
各种数组
下面是直接用后台返回的数组对象作为全选的数组,就会出现选项不激活的问题,具体就是误用了数组对象作为全选的数组,这样在点击全选之后会直接的赋值这个数组对象值但后面在选择其他后,后面又会增加一起checkbox的值,这样就会出现对应的项不激活的问题
handleCheckAllChange(val) { this.checkedList = val ? this.allAccountingList: []; this.isIndeterminate = false; },后台拿过来的数据进行处理
下面才是正确的做法

注意1: 在渲染的时候使用后台返回的数组对象进行渲染checkgroup,之后你得单独创建一个纯数组如上图allAccountingCode(存选项ID或者其他标识,你得注意:label得对应绑定相应的值,因为选项激活对比的就是这个字段)用来激活选项,不然的话你会发现checkgroup选择的时候会偶现不激活,具体的原因你们可以自己每次打印checkedList的值就可以看出问题所在。
下面是关于这个组件的两个触发事件的代码:核心的两个触发事件

elementUI与dialog嵌套所遇到的问题

**注意2:**其中还有一个问题就是我在dialog里面嵌套的复选框,要求是关闭dialog在打开的时候,这个checkList坑定要清空呀,我首先想到的是直接把它的length等于零就行了,然后在这里又踩了这个组件的另外一个坑。。。。即使被选中的checkList数组的length为零,你再次打开dialog以前被激活的仍然是激活的状态。这就比较令人很费解呀,还好后面查资料勉强解决了这个问题,但实在不推荐这个办法,但没办法暂时真想不出其他方法能解决。下面是我解决的代码:

 clearcheckedList() {//清空选择列表
                this.checkedList.length = 0 //这一步不能省
                console.log(this.checkedList)
                //强制更新数组 不建议但是在没找到合适的办法 checkboxgroup 遗留的坑
                this.$set(this.checkedList, 'checked', false)
            },

很重要的就是你得先把被选择的数组checkedList的长度改为零,后面在强制的更新这个数组改变它的checked属性,(不查资料还真不知道需要这么做!)。经过这些一系列的折腾之后,需求算是完成了。
以上就是我的一些心得,希望能帮助到一些开发类似功能的同学们!

Element UI 是一个基于 Vue.js 的 UI 组件库,它提供了丰富的组件和样式,方便开发人员构建用户界面。尽管 Element UI 是一个很受欢迎的框架,但也不可避免地会有一些需要注意。 1. 版本兼容性问题:在使用 Element UI 时,要确保你的 Vue.js 版本与 Element UI 的版本兼容。不同版本之间可能会存在一些 API 不一致的问题,导致一些功能无法正常使用。 2. 样式冲突:Element UI 提供了一套默认的样式主题,如果你的项目中已经有自定义的样式或者使用了其他的样式库,可能会出现样式冲突的问题。这时可以通过修改 Element UI 的主题样式或者使用 scoped 样式来解决冲突。 3. 组件定制化:Element UI 提供了很多常用的组件,但是当你需要进行一些较为特殊的定制时,可能会遇到一些限制。这时可以通过修改组件源码或者使用插槽等方式来实现定制化需求。 4. 文档不完善:尽管 Element UI 的文档相对较详细,但仍然可能存在一些不完善或者错误的地方。在遇到问题时,你可能需要查阅一些社区的讨论或者尝试不同的方法来解决。 5. 性能问题:由于 Element UI 提供了大量的组件和功能,如果在大规模数据展示或者复杂交互的情况下使用,可能会导致页面性能下降。在使用时要注意优化,避免过多的渲染和不必要的重绘。 这些是一些常见的 Element UI 中的,希望对你有所帮助。如果你有具体的问题,可以提供更多细节,我会尽力回答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值