zTree checkNode 在 node.checked 已等于目标值且 checkTypeFlag=false 时会提前 return, setChkClass(复选框外观刷新)被跳过。原先实现先手动赋值 n.checked 再调 checkNode, 导致除点击节点外,联动到的祖先/子孙节点只改数据、外观不刷新,表现为级联未生效。 改为由 checkNode 内部设置 checked 并刷新外观后再处理后续联动。
This commit is contained in:
@@ -77,8 +77,10 @@ export function setAppModulesChecked(app: { modules?: ModuleVo[] } | null | unde
|
||||
export function checkNodeWithCascade(treeObj: any, node: any, checked: boolean): void {
|
||||
if (!treeObj || !node) return;
|
||||
const set = (n: any, v: boolean) => {
|
||||
n.checked = v;
|
||||
if (!v && n.inheritFlag !== undefined) n.inheritFlag = false;
|
||||
// 注意:必须先调 checkNode,由 zTree 内部设置 checked 并调用 setChkClass 刷新复选框外观。
|
||||
// 若先手动 n.checked = v 再调 checkNode,会命中 zTree 的
|
||||
// `node.checked === checked && !checkTypeFlag` 提前 return,导致联动节点的外观不刷新。
|
||||
treeObj.checkNode(n, v, false, false);
|
||||
};
|
||||
set(node, checked);
|
||||
|
||||
Reference in New Issue
Block a user