瀏覽代碼

fix show loading, leak memory (#9189)

* fix show loading, leak memory

* $on -> $once

* refresh Trv

* remove space
Anatoly Kolesov 7 年之前
父節點
當前提交
e15272be56
共有 1 個文件被更改,包括 8 次插入2 次删除
  1. 8 2
      packages/loading/src/directive.js

+ 8 - 2
packages/loading/src/directive.js

@@ -37,15 +37,17 @@ exports.install = Vue => {
       });
     } else {
       if (el.domVisible) {
-        el.instance.$on('after-leave', _ => {
+        el.instance.$once('after-leave', _ => {
           el.domVisible = false;
           const target = binding.modifiers.fullscreen || binding.modifiers.body
             ? document.body
             : el;
           removeClass(target, 'el-loading-parent--relative');
           removeClass(target, 'el-loading-parent--hidden');
+          el.instance.hiding = false;
         });
         el.instance.visible = false;
+        el.instance.hiding = true;
       }
     }
   };
@@ -65,7 +67,11 @@ exports.install = Vue => {
 
       parent.appendChild(el.mask);
       Vue.nextTick(() => {
-        el.instance.visible = true;
+        if (el.instance.hiding) {
+          el.instance.$emit('after-leave');
+        } else {
+          el.instance.visible = true;
+        };
       });
       el.domInserted = true;
     }