@@ -23,27 +23,6 @@ export default class RouteTransition {
23
23
this . next = null
24
24
this . aborted = false
25
25
this . done = false
26
-
27
- // start by determine the queues
28
-
29
- // the deactivate queue is an array of router-view
30
- // directive instances that need to be deactivated,
31
- // deepest first.
32
- let view = router . _rootView
33
- this . deactivateQueue = router . _views = [ ]
34
- while ( view ) {
35
- this . deactivateQueue . unshift ( view )
36
- view = view . childView
37
- }
38
-
39
- // check the default handler of the deepest match
40
- let matched = to . matched
41
- ? Array . prototype . slice . call ( to . matched )
42
- : [ ]
43
-
44
- // the activate queue is an array of route handlers
45
- // that need to be activated
46
- this . activateQueue = matched . map ( match => match . handler )
47
26
}
48
27
49
28
/**
@@ -114,28 +93,37 @@ export default class RouteTransition {
114
93
115
94
start ( cb ) {
116
95
let transition = this
117
- let daq = this . deactivateQueue
118
- let aq = this . activateQueue
119
- let rdaq = daq . slice ( ) . reverse ( )
120
- let reuseQueue
96
+
97
+ // determine the queue of views to deactivate
98
+ let deactivateQueue = [ ]
99
+ let view = this . router . _rootView
100
+ while ( view ) {
101
+ deactivateQueue . unshift ( view )
102
+ view = view . childView
103
+ }
104
+ let reverseDeactivateQueue = deactivateQueue . slice ( ) . reverse ( )
105
+
106
+ // determine the queue of route handlers to activate
107
+ let activateQueue = this . activateQueue =
108
+ toArray ( this . to . matched ) . map ( match => match . handler )
121
109
122
110
// 1. Reusability phase
123
- let i
124
- for ( i = 0 ; i < rdaq . length ; i ++ ) {
125
- if ( ! canReuse ( rdaq [ i ] , aq [ i ] , transition ) ) {
111
+ let i , reuseQueue
112
+ for ( i = 0 ; i < reverseDeactivateQueue . length ; i ++ ) {
113
+ if ( ! canReuse ( reverseDeactivateQueue [ i ] , activateQueue [ i ] , transition ) ) {
126
114
break
127
115
}
128
116
}
129
117
if ( i > 0 ) {
130
- reuseQueue = rdaq . slice ( 0 , i )
131
- daq = rdaq . slice ( i ) . reverse ( )
132
- aq = aq . slice ( i )
118
+ reuseQueue = reverseDeactivateQueue . slice ( 0 , i )
119
+ deactivateQueue = reverseDeactivateQueue . slice ( i ) . reverse ( )
120
+ activateQueue = activateQueue . slice ( i )
133
121
}
134
122
135
123
// 2. Validation phase
136
- transition . runQueue ( daq , canDeactivate , ( ) => {
137
- transition . runQueue ( aq , canActivate , ( ) => {
138
- transition . runQueue ( daq , deactivate , ( ) => {
124
+ transition . runQueue ( deactivateQueue , canDeactivate , ( ) => {
125
+ transition . runQueue ( activateQueue , canActivate , ( ) => {
126
+ transition . runQueue ( deactivateQueue , deactivate , ( ) => {
139
127
// 3. Activation phase
140
128
141
129
// Update router current route
@@ -146,8 +134,8 @@ export default class RouteTransition {
146
134
147
135
// the root of the chain that needs to be replaced
148
136
// is the top-most non-reusable view.
149
- if ( daq . length ) {
150
- let view = daq [ daq . length - 1 ]
137
+ if ( deactivateQueue . length ) {
138
+ let view = deactivateQueue [ deactivateQueue . length - 1 ]
151
139
let depth = reuseQueue ? reuseQueue . length : 0
152
140
activate ( view , transition , depth , cb )
153
141
} else {
@@ -312,3 +300,9 @@ export default class RouteTransition {
312
300
function isPlainOjbect ( val ) {
313
301
return Object . prototype . toString . call ( val ) === '[object Object]'
314
302
}
303
+
304
+ function toArray ( val ) {
305
+ return val
306
+ ? Array . prototype . slice . call ( val )
307
+ : [ ]
308
+ }
0 commit comments