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 {
|
export function checkNodeWithCascade(treeObj: any, node: any, checked: boolean): void {
|
||||||
if (!treeObj || !node) return;
|
if (!treeObj || !node) return;
|
||||||
const set = (n: any, v: boolean) => {
|
const set = (n: any, v: boolean) => {
|
||||||
n.checked = v;
|
|
||||||
if (!v && n.inheritFlag !== undefined) n.inheritFlag = false;
|
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);
|
treeObj.checkNode(n, v, false, false);
|
||||||
};
|
};
|
||||||
set(node, checked);
|
set(node, checked);
|
||||||
|
|||||||
Reference in New Issue
Block a user