解决element ui中的el-tree组件default-checked-keys默认勾选节点问题

解决element ui中的el-tree组件default-checked-keys默认勾选节点问题

需求

选中子节点的时候,父节点必须被选中,但是仅展示被选中父节点和子节点

解决方法

方法1

html部分代码:

 <el-tree
     class="filter-tree"
     node-key="enCode"
     :data="areaTree"
     :props="defaultProps"
     :default-checked-keys="defaultChecked"
     :expand-on-click-node="false"
     show-checkbox
     default-expand-all
     ref="areaTrees">
</el-tree>

当需要动态改变树形结构的默认勾选值(例如每条数据都需要调接口查询,根据查询结果渲染树的选中情况)时,只修改defaultChecked的时,值的改变没有渲染相应的树节点,需要通过调用setCheckedKeys方法来改变选中状态:

js代码:

this.$nextTick(() => {
     this.$refs.areaTrees.setCheckedKeys(this.defaultChecked);
})

方法2

结合tree的ref属性

<el-tree
  :data="data"
  show-checkbox
  node-key="id"
  ref="tree"
  :props="defaultProps">
</el-tree>

js代码:

this.$refs.tree.getCheckedNodes(false, true);

通过getCheckedNodes获取所有选中节点

编辑处理

<el-tree
  :data="data"
  show-checkbox
  node-key="id"
  ref="tree"
  :default-checked-keys="defaultKeys"
  :check-strictly="true"
  :props="defaultProps">
</el-tree>

最初准备使用default-checked-keys属性,但是并非预期的效果,因为如果defaultKeys包含父节点,那么它所属的子节点都会被选中,即使你新增的时候没有选中其中的某个子节点。
找了找属性,看到了check-strictly,其描述为"在显示复选框的情况下,是否严格的遵循父子不互相关联的做法,默认为 false",试了一下,展示效果没有问题,但是选中子类的时候,父类不会被选中,选中父类的时候,子类也不会被勾选,等于完全不在关联,也不是想要的效果。

最终处理

 this.$refs.tree.setChecked(key/data, checked, deep);

已选中的key循环使用setChecked处理,具体参数描述如下

(key/data, checked, deep) 接收三个参数,1. 勾选节点的 key 或者 data 2. boolean 类型,节点是否选中 3. boolean 类型,是否设置子节点 ,默认为 false

其中有用的是第三个参数,不再对子节点进行设置,这样即保持了新增时候的选中效果,又可以点击父节点对子节点进行全部选中或者全部取消的效果。

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-01 09:48:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-01 09:48:04       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-01 09:48:04       82 阅读
  4. Python语言-面向对象

    2024-04-01 09:48:04       91 阅读

热门阅读

  1. Mojo编程语言案例及介绍

    2024-04-01 09:48:04       44 阅读
  2. C++经典面试题目(十五)

    2024-04-01 09:48:04       37 阅读
  3. 微信小程序(3.3.5) 对实时帧数据调速

    2024-04-01 09:48:04       39 阅读
  4. 微信小程序——wxss和css的区别

    2024-04-01 09:48:04       42 阅读
  5. uView内置样式

    2024-04-01 09:48:04       43 阅读
  6. Github2024-03-31 开源项目日报 Top10

    2024-04-01 09:48:04       47 阅读
  7. GitHub常用命令

    2024-04-01 09:48:04       35 阅读
  8. 量化交易入门(三十五)回测框架backtrader-Strategy

    2024-04-01 09:48:04       41 阅读
  9. three.js昼夜切换,白天黑夜的实现(含源码)

    2024-04-01 09:48:04       37 阅读