解决el-tree数据回显时子节点部分选中父节点都全选中的坑
el-tree
在编辑中回显数据时,有一个bug,就是只要我们回显的数据中有父节点的 id
,不管当前父节点下的子节点是部分选中还是全选中,回显的效果是该父子节点下的子节点都会全选中,这很显然不是我们需要的
看大家有用自己的办法解决,比如有说用 check-strictly
来控制父子互不互相关联的做法,还有自己手动写函数来控制父子节点的选中状态,但是方法多感觉很繁琐。
我这里用 getNode()
的方法来简单解决
预计的效果
目前实际效果
先上代码看如何实现
template 部分
<el-tree :data="list.data" show-checkbox node-key="id" :props="defaultProps" :default-expand-all="list.isExpand" v-loading="list.loading" ref="tree" @check-change="checkChange"> </el-tree>
js 部分
export default { data () { return { list: { data: [], loading: false, isExpand: true }, defaultProps: { children: 'children', label: 'name' }, loading:false } }, methods: { defaultChecked () { // 默认选中 this.$nextTick(() => { const arr = [] this.menus.forEach(item => { if (!this.$refs.tree.getNode(item.id).childNodes || !this.$refs.tree.getNode(item.id).childNodes.length) { arr.push(item.id) } }) this.$refs.tree.setCheckedKeys(arr) }) }, } }
解析:this.menus
是从后端获取回来的数据,getNode()
获取到当前节点,判断当前节点是否是叶子节点,是的话存入 arr
数组中,最后使用 setCheckedKeys()
将数据回显选中,从而实现父级的半选状态
打印了一下Node 节点
以上就是解决el-tree数据回显时子节点部分选中父节点都全选中的坑的详细内容,更多关于el-tree 数据回显的资料请关注脚本之家其它相关文章!
相关文章
vue.js2.0 实现better-scroll的滚动效果实例详解
better-scroll 是一个移动端滚动的解决方案,它是基于 iscroll 的重写。better-scroll 也很强大,不仅可以做普通的滚动列表,还可以做轮播图、picker 等等,下面通过本文给大家介绍vue.js2.0 实现better-scroll的滚动效果,感兴趣的朋友一起看看吧2018-08-08vue elementUI tree树形控件获取父节点ID的实例
今天小编就为大家分享一篇vue elementUI tree树形控件获取父节点ID的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2018-09-09element的el-form和el-table嵌套使用实现
本文主要介绍了element的el-form和el-table嵌套使用实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2022-08-08
最新评论