1
0
mirror of synced 2026-04-03 14:38:37 +08:00

fix(editor): model-value变化后需要重新生成依赖后再通知runtime更新

This commit is contained in:
roymondchen
2023-11-06 16:33:30 +08:00
parent 7a228b13e6
commit f0f94d4fcc
2 changed files with 31 additions and 28 deletions

View File

@@ -276,26 +276,6 @@ export const initServiceEvents = (
};
const rootChangeHandler = async (value: MApp | null, preValue?: MApp | null) => {
const nodeId = editorService.get('node')?.id || props.defaultSelected;
let node;
if (nodeId) {
node = editorService.getNodeById(nodeId);
}
if (node && node !== value) {
await editorService.select(node.id);
} else if (value?.items?.length) {
await editorService.select(value.items[0]);
} else if (value?.id) {
editorService.set('nodes', [value]);
editorService.set('parent', null);
editorService.set('page', null);
}
if (toRaw(value) !== toRaw(preValue)) {
emit('update:modelValue', value);
}
if (!value) return;
value.codeBlocks = value.codeBlocks || {};
@@ -314,12 +294,32 @@ export const initServiceEvents = (
initDataSourceDepTarget(ds);
});
if (value && Array.isArray(value.items)) {
if (Array.isArray(value.items)) {
depService.collect(value.items, true);
} else {
depService.clear();
delete value.dataSourceDeps;
}
const nodeId = editorService.get('node')?.id || props.defaultSelected;
let node;
if (nodeId) {
node = editorService.getNodeById(nodeId);
}
if (node && node !== value) {
await editorService.select(node.id);
} else if (value.items?.length) {
await editorService.select(value.items[0]);
} else if (value.id) {
editorService.set('nodes', [value]);
editorService.set('parent', null);
editorService.set('page', null);
}
if (toRaw(value) !== toRaw(preValue)) {
emit('update:modelValue', value);
}
};
// 新增节点,收集依赖