mirror of
https://github.com/Tencent/tmagic-editor.git
synced 2025-06-14 00:39:21 +08:00
feat(core): instance设定不再限制只有方法
This commit is contained in:
parent
6dc007388b
commit
e5bcd762b2
@ -73,7 +73,11 @@ class Node extends EventEmitter {
|
||||
const { events, style } = data;
|
||||
this.events = events || [];
|
||||
this.style = style || {};
|
||||
this.instance.config = data;
|
||||
try {
|
||||
this.instance.config = data;
|
||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
||||
} catch (e: any) {}
|
||||
|
||||
this.emit('update-data', data);
|
||||
}
|
||||
|
||||
@ -81,6 +85,9 @@ class Node extends EventEmitter {
|
||||
this.eventQueue.push(event);
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated use setInstance instead
|
||||
*/
|
||||
public registerMethod(methods: Methods) {
|
||||
if (!methods) {
|
||||
return;
|
||||
@ -97,6 +104,10 @@ class Node extends EventEmitter {
|
||||
}
|
||||
}
|
||||
|
||||
public setInstance(instance: any) {
|
||||
this.instance = instance;
|
||||
}
|
||||
|
||||
public async runHookCode(hook: string, params?: Record<string, any>) {
|
||||
if (typeof this.data[hook] === 'function') {
|
||||
// 兼容旧的数据格式
|
||||
@ -144,6 +155,10 @@ class Node extends EventEmitter {
|
||||
}
|
||||
|
||||
public destroy() {
|
||||
this.eventQueue.length = 0;
|
||||
this.instance = null;
|
||||
this.events = [];
|
||||
this.style = {};
|
||||
this.removeAllListeners();
|
||||
}
|
||||
|
||||
@ -159,10 +174,7 @@ class Node extends EventEmitter {
|
||||
});
|
||||
|
||||
if (instance) {
|
||||
this.registerMethod(instance);
|
||||
if (instance.config) {
|
||||
this.setData(instance.config);
|
||||
}
|
||||
this.setInstance(instance);
|
||||
}
|
||||
|
||||
this.runHookCode('created');
|
||||
@ -171,10 +183,7 @@ class Node extends EventEmitter {
|
||||
this.once('mounted', (instance: any) => {
|
||||
const handler = async () => {
|
||||
if (instance) {
|
||||
this.registerMethod(instance);
|
||||
if (instance.config) {
|
||||
this.setData(instance.config);
|
||||
}
|
||||
this.setInstance(instance);
|
||||
}
|
||||
|
||||
for (let eventConfig = this.eventQueue.shift(); eventConfig; eventConfig = this.eventQueue.shift()) {
|
||||
|
@ -106,9 +106,16 @@ class Page extends Node {
|
||||
}
|
||||
|
||||
public destroy(): void {
|
||||
super.destroy();
|
||||
this.nodes.forEach((node) => {
|
||||
if (node === this) {
|
||||
return;
|
||||
}
|
||||
node.destroy();
|
||||
});
|
||||
|
||||
this.nodes.clear();
|
||||
|
||||
super.destroy();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
{
|
||||
"version": "0.1.0",
|
||||
"version": "0.1.1",
|
||||
"name": "@tmagic/vue-page",
|
||||
"type": "module",
|
||||
"main": "src/index.ts",
|
||||
|
@ -73,7 +73,7 @@ export default defineComponent({
|
||||
const node = useNode({ config: { ...config, [IS_DSL_NODE_KEY]: true } }, app);
|
||||
|
||||
if (config.id !== preConfig?.id) {
|
||||
node?.registerMethod({ refresh });
|
||||
node?.setInstance({ config: props.config, refresh });
|
||||
node?.emit('created');
|
||||
}
|
||||
await nextTick();
|
||||
|
Loading…
x
Reference in New Issue
Block a user