@@ -77,20 +77,20 @@ function $TransitionProvider() {
77
77
* @returns {Object } New `Transition` object
78
78
*/
79
79
function Transition ( fromState , fromParams , toState , toParams , options ) {
80
- var transition = this ;
81
- var keep = 0 , state , retained , entering , exiting ;
82
- var hasRun = false , hasCalculated = false ;
83
-
80
+ var transition = this ; // Transition() object
84
81
// grab $transition's current path
85
- var toPath , fromPath = _fromPath ;
82
+ var toPath , fromPath = _fromPath ; // Path() objects
83
+ var retained , entering , exiting ; // Path() objects
84
+ var keep = 0 , state , hasRun = false , hasCalculated = false ;
86
85
87
86
var states = {
88
87
to : stateMatcher ( toState , options ) ,
89
88
from : stateMatcher ( fromState , options )
90
89
} ;
90
+ toState = states . to ; fromState = states . from ;
91
91
92
92
function isTargetStateValid ( ) {
93
- var state = stateMatcher ( toState , options ) ;
93
+ var state = states . to ;
94
94
95
95
if ( ! isDefined ( state ) ) {
96
96
if ( ! options || ! options . relative ) return "No such state " + angular . toJson ( toState ) ;
@@ -148,9 +148,8 @@ function $TransitionProvider() {
148
148
// - resolve PathElement lazy resolvables
149
149
// - then, invokeAsync onEnter
150
150
151
- var exitingElements = transition . exiting ( ) . slice ( 0 ) ;
152
- exitingElements . reverse ( ) ;
153
- var enteringElements = transition . entering ( ) ;
151
+ var exitingElements = transition . exiting ( ) . slice ( 0 ) . reverse ( ) . elements ;
152
+ var enteringElements = transition . entering ( ) . elements ;
154
153
var promiseChain = $q . when ( true ) ;
155
154
forEach ( exitingElements , function ( elem ) {
156
155
if ( elem . state . onExit ) {
@@ -159,7 +158,7 @@ function $TransitionProvider() {
159
158
}
160
159
} ) ;
161
160
forEach ( enteringElements , function ( elem ) {
162
- var resolveContext = fromPath . resolveContext ( elem ) ;
161
+ var resolveContext = toPath . resolveContext ( elem ) ;
163
162
promiseChain . then ( function ( ) { return elem . resolve ( resolveContext , { policy : "lazy" } ) ; } ) ;
164
163
if ( elem . state . onEnter ) {
165
164
var nextStep = transitionStep ( elem . state . onEnter , resolveContext ) ;
@@ -310,7 +309,8 @@ function $TransitionProvider() {
310
309
return ( toState === fromState && ! options . reload ) ;
311
310
} ,
312
311
runAsync : function ( ) {
313
- var pathContext = new PathContext ( toPath ) ;
312
+ calculateTreeChanges ( ) ;
313
+ var pathContext = new ResolveContext ( toPath ) ;
314
314
return toPath . resolve ( pathContext , { policy : "eager" } )
315
315
. then ( buildTransitionSteps ) ;
316
316
} ,
@@ -346,6 +346,7 @@ function $TransitionProvider() {
346
346
347
347
348
348
$transition . init = function init ( state , params , matcher ) {
349
+ _fromPath = new Path ( state . path ) ;
349
350
from = { state : state , params : params } ;
350
351
to = { state : null , params : null } ;
351
352
stateMatcher = matcher ;
0 commit comments