Bläddra i källkod

destroy component after leaving transition

Evan You 11 år sedan
förälder
incheckning
add1c73717
1 ändrade filer med 16 tillägg och 7 borttagningar
  1. 16 7
      src/directives/component.js

+ 16 - 7
src/directives/component.js

@@ -108,21 +108,30 @@ module.exports = {
    */
 
   unbuild: function (remove) {
-    if (!this.childVM) {
+    var child = this.childVM
+    if (!child) {
       return
     }
     if (this.keepAlive) {
       if (remove) {
-        this.childVM.$remove()
+        child.$remove()
       }
     } else {
-      this.childVM.$destroy(remove)
-      if (this.parentDirs) {
-        var i = this.parentDirs.length
-        while (i--) {
-          this.parentDirs[i]._teardown()
+      var parentDirs = this.parentDirs
+      var destroy = function () {
+        child.$destroy()
+        if (parentDirs) {
+          var i = parentDirs.length
+          while (i--) {
+            parentDirs[i]._teardown()
+          }
         }
       }
+      if (remove) {
+        child.$remove(destroy)
+      } else {
+        destroy()
+      }
     }
     this.childVM = null
   },