fix(stage): 标尺销毁后没有移除对应的dom

fix #617
This commit is contained in:
roymondchen 2024-06-28 19:12:36 +08:00
parent a164e2be62
commit 079679997a
2 changed files with 18 additions and 6 deletions

View File

@ -5,6 +5,8 @@ import Guides, { type GuidesEvents, type GuidesOptions } from '@scena/guides';
import { GuidesType } from './const';
import type { RuleOptions } from './types';
const guidesClass = 'tmagic-stage-guides';
export default class Rule extends EventEmitter {
public hGuides: Guides;
public vGuides: Guides;
@ -84,12 +86,11 @@ export default class Rule extends EventEmitter {
* @param show
*/
public showRule(show = true) {
// 当尺子隐藏时发大小变化,显示后会变形,所以这里做重新初始化处理
// 当尺子隐藏时发大小变化,显示后会变形,所以这里做重新初始化处理
if (show) {
this.hGuides.destroy();
this.hGuides = this.createGuides(GuidesType.HORIZONTAL, this.horizontalGuidelines);
this.destroyGuides();
this.vGuides.destroy();
this.hGuides = this.createGuides(GuidesType.HORIZONTAL, this.horizontalGuidelines);
this.vGuides = this.createGuides(GuidesType.VERTICAL, this.verticalGuidelines);
} else {
this.hGuides.setState({
@ -115,12 +116,22 @@ export default class Rule extends EventEmitter {
}
public destroy(): void {
this.destroyGuides();
this.hGuides.off('changeGuides', this.hGuidesChangeGuidesHandler);
this.vGuides.off('changeGuides', this.vGuidesChangeGuidesHandler);
this.containerResizeObserver.disconnect();
this.removeAllListeners();
}
public destroyGuides(): void {
this.hGuides.destroy();
this.vGuides.destroy();
this.container.querySelectorAll(`.${guidesClass}`).forEach((el) => {
el.remove();
});
}
private getGuidesStyle = (type: GuidesType) => ({
position: 'fixed',
zIndex: 1,
@ -135,6 +146,7 @@ export default class Rule extends EventEmitter {
type,
defaultGuides,
displayDragPos: true,
className: guidesClass,
backgroundColor: '#fff',
lineColor: '#000',
textColor: '#000',

View File

@ -170,12 +170,12 @@ export default class StageMask extends Rule {
*
*/
public destroy(): void {
super.destroy();
this.content?.remove();
this.page = null;
this.pageScrollParent = null;
this.wrapperResizeObserver?.disconnect();
super.destroy();
}
public on<Name extends keyof MaskEvents, Param extends MaskEvents[Name]>(