diff --git a/simple-mind-map/index.js b/simple-mind-map/index.js index f95a51e4..8767e978 100644 --- a/simple-mind-map/index.js +++ b/simple-mind-map/index.js @@ -406,6 +406,9 @@ class MindMap { destroy() { // 移除插件 ;[...MindMap.pluginList].forEach(plugin => { + if (this[plugin.instanceName].beforePluginDestroy) { + this[plugin.instanceName].beforePluginDestroy() + } this[plugin.instanceName] = null }) // 解绑事件 @@ -414,6 +417,7 @@ class MindMap { this.svg.remove() // 去除给容器元素设置的背景样式 Style.removeBackgroundStyle(this.el) + this.el.innerHTML = '' this.el = null } } diff --git a/simple-mind-map/src/plugins/NodeImgAdjust.js b/simple-mind-map/src/plugins/NodeImgAdjust.js index 4999f4bc..cdde7045 100644 --- a/simple-mind-map/src/plugins/NodeImgAdjust.js +++ b/simple-mind-map/src/plugins/NodeImgAdjust.js @@ -263,6 +263,11 @@ class NodeImgAdjust { beforePluginRemove() { this.unBindEvent() } + + // 插件被卸载前做的事情 + beforePluginDestroy() { + this.unBindEvent() + } } NodeImgAdjust.instanceName = 'nodeImgAdjust' diff --git a/simple-mind-map/src/plugins/Painter.js b/simple-mind-map/src/plugins/Painter.js index 50ee08e5..b9ef5cd3 100644 --- a/simple-mind-map/src/plugins/Painter.js +++ b/simple-mind-map/src/plugins/Painter.js @@ -69,6 +69,11 @@ class Painter { beforePluginRemove() { this.unBindEvent() } + + // 插件被卸载前做的事情 + beforePluginDestroy() { + this.unBindEvent() + } } Painter.instanceName = 'painter' diff --git a/simple-mind-map/src/plugins/RichText.js b/simple-mind-map/src/plugins/RichText.js index 8b393d60..2bd229e2 100644 --- a/simple-mind-map/src/plugins/RichText.js +++ b/simple-mind-map/src/plugins/RichText.js @@ -631,6 +631,11 @@ class RichText { this.transformAllNodesToNormalNode() document.head.removeChild(this.styleEl) } + + // 插件被卸载前做的事情 + beforePluginDestroy() { + document.head.removeChild(this.styleEl) + } } RichText.instanceName = 'richText' diff --git a/simple-mind-map/src/plugins/TouchEvent.js b/simple-mind-map/src/plugins/TouchEvent.js index e2a3a741..7bad4fc3 100644 --- a/simple-mind-map/src/plugins/TouchEvent.js +++ b/simple-mind-map/src/plugins/TouchEvent.js @@ -148,6 +148,11 @@ class TouchEvent { beforePluginRemove() { this.unBindEvent() } + + // 插件被卸载前做的事情 + beforePluginDestroy() { + this.unBindEvent() + } } TouchEvent.instanceName = 'touchEvent'