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