|
@@ -19,13 +19,14 @@ export function createLoading(props?: Partial<LoadingProps>, target?: HTMLElemen
|
|
|
|
|
|
vm = createVNode(LoadingWrap);
|
|
|
|
|
|
+ let container: Nullable<HTMLElement> = null;
|
|
|
if (wait) {
|
|
|
// TODO fix https://github.com/anncwb/vue-vben-admin/issues/438
|
|
|
setTimeout(() => {
|
|
|
- render(vm, document.createElement('div'));
|
|
|
+ container && render(vm, (container = document.createElement('div')));
|
|
|
}, 0);
|
|
|
} else {
|
|
|
- render(vm, document.createElement('div'));
|
|
|
+ render(vm, (container = document.createElement('div')));
|
|
|
}
|
|
|
|
|
|
function close() {
|
|
@@ -41,6 +42,11 @@ export function createLoading(props?: Partial<LoadingProps>, target?: HTMLElemen
|
|
|
target.appendChild(vm.el as HTMLElement);
|
|
|
}
|
|
|
|
|
|
+ function destory() {
|
|
|
+ container && render(null, container);
|
|
|
+ container = vm = null;
|
|
|
+ }
|
|
|
+
|
|
|
if (target) {
|
|
|
open(target);
|
|
|
}
|
|
@@ -48,6 +54,7 @@ export function createLoading(props?: Partial<LoadingProps>, target?: HTMLElemen
|
|
|
vm,
|
|
|
close,
|
|
|
open,
|
|
|
+ destory,
|
|
|
setTip: (tip: string) => {
|
|
|
data.tip = tip;
|
|
|
},
|