阅读 370

Element UI Tree 组件获取选中状态和半选中状态的节点

-666666 黑魔法

官网提供的获取半选中状态的方法

上传数据

通过-666666隔断已经选中的节点和半选中状态的父节点

[].concat(this.$refs.menuListTree.getCheckedKeys(), [this.tempKey], this.$refs.menuListTree.getHalfCheckedKeys())
复制代码

获取数据

通过分割,剥离-666666后面的节点ID

var idx = this.menuIdList.indexOf(this.tempKey)
if (idx !== -1) {
  this.menuIdList.splice(idx, this.menuIdList.length - idx)
}
this.$refs.menuListTree.setCheckedKeys(this.menuIdList)
复制代码

暂未发现问题

通过 setChecked(item, true) 设置节点选中

上传数据

[
    ...this.$refs.menuListTree.getCheckedKeys(), ...this.$refs.menuListTree.getHalfCheckedKeys()
]
复制代码

获取数据

通过setChecked循环选中节点

this.dataForm.menuIdList.forEach(item =>this.$refs.menuListTree.setChecked(item, true))
复制代码

小瑕疵,即半选中状态下父节点是勾选状态而不是`-`, 但不影响功能的使用