@@ -115,8 +115,10 @@ function $StateProvider( $urlRouterProvider, $urlMatcherFactory, $
115
115
116
116
// Register the state in the global state list and with $urlRouter if necessary.
117
117
if ( ! state [ 'abstract' ] && url ) {
118
- $urlRouterProvider . when ( url , [ '$match' , function ( $match ) {
119
- if ( $state . $current . navigable != state ) $state . transitionTo ( state , $match , false ) ;
118
+ $urlRouterProvider . when ( url , [ '$match' , '$stateParams' , function ( $match , $stateParams ) {
119
+ if ( $state . $current . navigable != state || ! equalForKeys ( $match , $stateParams ) ) {
120
+ $state . transitionTo ( state , $match , false ) ;
121
+ }
120
122
} ] ) ;
121
123
}
122
124
states [ name ] = state ;
@@ -328,25 +330,31 @@ function $StateProvider( $urlRouterProvider, $urlMatcherFactory, $
328
330
} ) ;
329
331
}
330
332
331
- function normalize ( keys , values ) {
332
- var normalized = { } ;
333
+ return $state ;
334
+ }
333
335
334
- forEach ( keys , function ( name ) {
335
- var value = values [ name ] ;
336
- normalized [ name ] = ( value != null ) ? String ( value ) : null ;
337
- } ) ;
338
- return normalized ;
339
- }
336
+ function normalize ( keys , values ) {
337
+ var normalized = { } ;
340
338
341
- function equalForKeys ( a , b , keys ) {
342
- for ( var i = 0 ; i < keys . length ; i ++ ) {
343
- var k = keys [ i ] ;
344
- if ( a [ k ] != b [ k ] ) return false ; // Not '===', values aren't necessarily normalized
345
- }
346
- return true ;
339
+ forEach ( keys , function ( name ) {
340
+ var value = values [ name ] ;
341
+ normalized [ name ] = ( value != null ) ? String ( value ) : null ;
342
+ } ) ;
343
+ return normalized ;
344
+ }
345
+
346
+ function equalForKeys ( a , b , keys ) {
347
+ // If keys not provided, assume keys from object 'a'
348
+ if ( ! keys ) {
349
+ keys = [ ] ;
350
+ for ( var n in a ) keys . push ( n ) ; // Used instead of Object.keys() for IE8 compatibility
347
351
}
348
352
349
- return $state ;
353
+ for ( var i = 0 ; i < keys . length ; i ++ ) {
354
+ var k = keys [ i ] ;
355
+ if ( a [ k ] != b [ k ] ) return false ; // Not '===', values aren't necessarily normalized
356
+ }
357
+ return true ;
350
358
}
351
359
}
352
360
0 commit comments