vue+element ui
vue组件中的el-tree:
<el-tree
ref="tree"
:data="permissionList"
show-checkbox
check-strictly
node-key="id"
:default-checked-keys="hasPermission"
:props="defaultProps"
class="mb-30"
@check-change="clickTreeDeal"
/>
data() {
return {
defaultProps: {
children: 'children',
label: 'title'
},
hasPermission: [],
permissionList: []
}
},
clickTreeDeal(curObj, objStatus) {
// curObj: 当前节点数据
// objStatus: 当前节点的状态,选中为 true ,取消选择为false
// this.$refs.tree.getNode(curObj):获取当前节点的node
if (objStatus) {
// 当前节点选中,勾选父节点
const parentNode = this.$refs.tree.getNode(curObj).parent
if (parentNode.key !== undefined) {
this.$refs.tree.setChecked(parentNode, true)
}
} else {
// 当前节点取消选中,所有子节点取消选中
if (curObj.children !== undefined) {
curObj.children.forEach((item, i) => {
this.$refs.tree.setChecked(item, false, true)
})
}
}
},