diff --git a/packages/editor/src/Editor.vue b/packages/editor/src/Editor.vue index 96dba8c2..b0cf2ad1 100644 --- a/packages/editor/src/Editor.vue +++ b/packages/editor/src/Editor.vue @@ -223,7 +223,7 @@ export default defineComponent({ emits: ['props-panel-mounted', 'update:modelValue'], setup(props, { emit }) { - editorService.on('root-change', (value) => { + editorService.on('root-change', (value, preValue) => { const nodeId = editorService.get('node')?.id || props.defaultSelected; let node; if (nodeId) { @@ -240,7 +240,7 @@ export default defineComponent({ editorService.set('page', null); } - if (toRaw(value) !== toRaw(editorService.get('root'))) { + if (toRaw(value) !== toRaw(preValue)) { emit('update:modelValue', value); } }); diff --git a/packages/editor/src/services/editor.ts b/packages/editor/src/services/editor.ts index 2f1d3e71..356a438c 100644 --- a/packages/editor/src/services/editor.ts +++ b/packages/editor/src/services/editor.ts @@ -95,6 +95,7 @@ class Editor extends BaseService { * @param value MNode */ public set(name: keyof StoreState, value: T) { + const preValue = this.state[name]; this.state[name] = value as any; // set nodes时将node设置为nodes第一个元素 if (name === 'nodes') { @@ -102,7 +103,7 @@ class Editor extends BaseService { } if (name === 'root') { this.state.pageLength = (value as unknown as MApp)?.items?.length || 0; - this.emit('root-change', value); + this.emit('root-change', value, preValue); } }