@@ -20,7 +20,7 @@ function $StateProvider( $urlRouterProvider, $urlMatcherFactory, $
20
20
// inherit 'data' from parent and override by own values (if any)
21
21
data : function ( state ) {
22
22
if ( state . parent && state . parent . data ) {
23
- state . data = state . self . data = angular . extend ( { } , state . parent . data , state . data ) ;
23
+ state . data = state . self . data = extend ( { } , state . parent . data , state . data ) ;
24
24
}
25
25
return state . data ;
26
26
} ,
@@ -105,11 +105,14 @@ function $StateProvider( $urlRouterProvider, $urlMatcherFactory, $
105
105
}
106
106
} ;
107
107
108
+ function isRelative ( stateName ) {
109
+ return stateName . indexOf ( "." ) === 0 || stateName . indexOf ( "^" ) === 0 ;
110
+ }
108
111
109
112
function findState ( stateOrName , base ) {
110
113
var isStr = isString ( stateOrName ) ,
111
114
name = isStr ? stateOrName : stateOrName . name ,
112
- path = name . indexOf ( "." ) === 0 || name . indexOf ( "^" ) === 0 ;
115
+ path = isRelative ( name ) ;
113
116
114
117
if ( path ) {
115
118
if ( ! base ) throw new Error ( "No reference point given for path '" + name + "'" ) ;
@@ -215,7 +218,11 @@ function $StateProvider( $urlRouterProvider, $urlMatcherFactory, $
215
218
options = extend ( { location : true , inherit : false , relative : null } , options ) ;
216
219
217
220
var toState = findState ( to , options . relative ) ;
218
- if ( ! isDefined ( toState ) ) throw new Error ( "No such state " + toState ) ;
221
+
222
+ if ( ! isDefined ( toState ) ) {
223
+ if ( options . relative ) throw new Error ( "Could not resolve '" + to + "' from state '" + options . relative + "'" ) ;
224
+ throw new Error ( "No such state '" + to + "'" ) ;
225
+ }
219
226
if ( toState [ 'abstract' ] ) throw new Error ( "Cannot transition to abstract state '" + to + "'" ) ;
220
227
if ( options . inherit ) toParams = inheritParams ( $stateParams , toParams || { } , $state . $current , toState ) ;
221
228
to = toState ;
0 commit comments