@@ -60,18 +60,19 @@ function compile (el, options, partial, transcluded) {
60
60
if ( nodeLinkFn ) nodeLinkFn ( source , el , host )
61
61
if ( childLinkFn ) childLinkFn ( source , childNodes , host )
62
62
63
+ var selfDirs = vm . _directives . slice ( originalDirCount )
64
+ var parentDirs = vm . $parent &&
65
+ vm . $parent . _directives . slice ( parentOriginalDirCount )
66
+
63
67
/**
64
68
* The linker function returns an unlink function that
65
69
* tearsdown all directives instances generated during
66
70
* the process.
71
+ *
72
+ * @param {Boolean } destroying
67
73
*/
68
-
69
- var selfDirs = vm . _directives . slice ( originalDirCount )
70
- var parentDirs = vm . $parent &&
71
- vm . $parent . _directives . slice ( parentOriginalDirCount )
72
-
73
- return function unlink ( ) {
74
- teardownDirs ( vm , selfDirs )
74
+ return function unlink ( destroying ) {
75
+ teardownDirs ( vm , selfDirs , destroying )
75
76
if ( parentDirs ) {
76
77
teardownDirs ( vm . $parent , parentDirs )
77
78
}
@@ -92,13 +93,16 @@ function compile (el, options, partial, transcluded) {
92
93
*
93
94
* @param {Vue } vm
94
95
* @param {Array } dirs
96
+ * @param {Boolean } destroying
95
97
*/
96
98
97
- function teardownDirs ( vm , dirs ) {
99
+ function teardownDirs ( vm , dirs , destroying ) {
98
100
var i = dirs . length
99
101
while ( i -- ) {
100
102
dirs [ i ] . _teardown ( )
101
- vm . _directives . $remove ( dirs [ i ] )
103
+ if ( ! destroying ) {
104
+ vm . _directives . $remove ( dirs [ i ] )
105
+ }
102
106
}
103
107
}
104
108
0 commit comments