11/**
22 * State-based routing for AngularJS
3- * @version v0.3.0
3+ * @version v0.3.1
44 * @link http://angular-ui.github.com/
55 * @license MIT License, http://www.opensource.org/licenses/MIT
66 */
@@ -3355,7 +3355,7 @@ function $StateProvider( $urlRouterProvider, $urlMatcherFactory) {
33553355 $urlRouter . update ( true ) ;
33563356
33573357 return $state . current ;
3358- } , function ( error ) {
3358+ } ) . then ( null , function ( error ) {
33593359 if ( $state . transition !== transition ) return TransitionSuperseded ;
33603360
33613361 $state . transition = null ;
@@ -3986,7 +3986,7 @@ function $ViewDirective( $state, $injector, $uiViewScroll, $interpolate,
39863986 }
39873987
39883988 if ( currentEl ) {
3989- var $uiViewData = currentEl . data ( '$uiView ' ) ;
3989+ var $uiViewData = currentEl . data ( '$uiViewAnim ' ) ;
39903990 renderer . leave ( currentEl , function ( ) {
39913991 $uiViewData . $$animLeave . resolve ( ) ;
39923992 previousEl = null ;
@@ -3999,7 +3999,7 @@ function $ViewDirective( $state, $injector, $uiViewScroll, $interpolate,
39993999
40004000 function updateView ( firstTime ) {
40014001 var newScope ,
4002- name = getUiViewName ( scope , attrs , inherited , $interpolate ) ,
4002+ name = getUiViewName ( scope , attrs , $element , $interpolate ) ,
40034003 previousLocals = name && $state . $current && $state . $current . locals [ name ] ;
40044004
40054005 if ( ! firstTime && previousLocals === latestLocals ) return ; // nothing to do
@@ -4022,14 +4022,14 @@ function $ViewDirective( $state, $injector, $uiViewScroll, $interpolate,
40224022
40234023 var clone = $transclude ( newScope , function ( clone ) {
40244024 var animEnter = $q . defer ( ) , animLeave = $q . defer ( ) ;
4025- var viewData = {
4026- name : name ,
4025+ var viewAnimData = {
40274026 $animEnter : animEnter . promise ,
40284027 $animLeave : animLeave . promise ,
40294028 $$animLeave : animLeave
40304029 } ;
40314030
4032- renderer . enter ( clone . data ( '$uiView' , viewData ) , $element , function onUiViewEnter ( ) {
4031+ clone . data ( '$uiViewAnim' , viewAnimData ) ;
4032+ renderer . enter ( clone , $element , function onUiViewEnter ( ) {
40334033 animEnter . resolve ( ) ;
40344034 if ( currentScope ) {
40354035 currentScope . $emit ( '$viewContentAnimationEnded' ) ;
@@ -4074,14 +4074,14 @@ function $ViewDirectiveFill ( $compile, $controller, $state, $interpolate
40744074 var initial = tElement . html ( ) ;
40754075 return function ( scope , $element , attrs ) {
40764076 var current = $state . $current ,
4077- $uiViewData = $element . data ( '$uiView' ) ,
4078- locals = current && current . locals [ $uiViewData . name ] ;
4077+ name = getUiViewName ( scope , attrs , $element , $interpolate ) ,
4078+ locals = current && current . locals [ name ] ;
40794079
40804080 if ( ! locals ) {
40814081 return ;
40824082 }
40834083
4084- extend ( $uiViewData , { state : locals . $$state } ) ;
4084+ $element . data ( '$uiView' , { name : name , state : locals . $$state } ) ;
40854085 $element . html ( locals . $template ? locals . $template : initial ) ;
40864086
40874087 var resolveData = angular . extend ( { } , locals ) ;
@@ -4112,9 +4112,10 @@ function $ViewDirectiveFill ( $compile, $controller, $state, $interpolate
41124112 * Shared ui-view code for both directives:
41134113 * Given scope, element, and its attributes, return the view's name
41144114 */
4115- function getUiViewName ( scope , attrs , inherited , $interpolate ) {
4115+ function getUiViewName ( scope , attrs , element , $interpolate ) {
41164116 var name = $interpolate ( attrs . uiView || attrs . name || '' ) ( scope ) ;
4117- return name . indexOf ( '@' ) >= 0 ? name : ( name + '@' + ( inherited ? inherited . state . name : '' ) ) ;
4117+ var uiViewCreatedBy = element . inheritedData ( '$uiView' ) ;
4118+ return name . indexOf ( '@' ) >= 0 ? name : ( name + '@' + ( uiViewCreatedBy ? uiViewCreatedBy . state . name : '' ) ) ;
41184119}
41194120
41204121angular . module ( 'ui.router.state' ) . directive ( 'uiView' , $ViewDirective ) ;
0 commit comments