2015-05-29 11 views
5

Ich habe ein Problem mit der Animation nach der Aktualisierung von Angular 1.2 -> 1.4.Angular Animate 1.4 zu schnell

Ich animiere Seitenübergänge, indem ich die css-Klasse im Element des Ansichtscontainers ändere. Ich benutze UI-Router und haben ng-Klasse-Direktive für das Element. Der Benutzer navigiert mit den Pfeiltasten (Ereignis-Listener in app.run()). Dadurch wird die Klasse als String-Variable 'navDirection' (links/rechts) auf $ rootScope festgelegt.

Nach der Aktualisierung scheint $ rootScope.navDirection NACH der Animation gesetzt zu sein. Die Animation ist also falsch, wenn der Benutzer die Richtung ändert.

Alle Vorschläge und/oder Kommentare sind willkommen!

index.html

<body ng-cloak ng-keydown="handleEvt($event)"> 
    <div class="page-wrapper page-wrapper--constrain" ng-class="{'page-wrapper--decorate' : decoratePageContent === true}"> 
     <div class="page-content group position-context"> 
      <div ui-view class="slide" ng-class="{'at-view-slide-in-left at-view-slide-out-right': navDirection == 'right', 'at-view-slide-in-right at-view-slide-out-left': navDirection == 'left'}"></div> 
     </div> 
    </div> 
</body> 

app.js

var app = angular.module('my-app', [ 
    'ui.router', 
    'ngAnimate' 
]); 

// ... 

app.run(function ($rootScope, navigationService) { 

    $rootScope.handleEvt = function(e) { 
     if ($rootScope.navVisible) { 
      switch (e.which) { 
       // right 
       case 37: 
        $rootScope.navDirection = "right"; 
        navigationService.navigate(navigationService.getCurrentPageIndex() - 1); 
        break; 
       // left 
       case 39: 
        $rootScope.navDirection = "left"; 
        navigationService.navigate(navigationService.getCurrentPageIndex() + 1); 
        break; 
      } 
     } 
    }; 

// ... 
+0

Können Sie einen funktionierenden Codepen von dem, was Sie gerade arbeiten, einrichten? –

Antwort

0

ngAnimate in Version 1.4 intern Refactoring wird. Es wird nicht gleichzeitig Java- und CSS-Animationen ausführen. Derselbe Effekt kann nun erreicht werden, indem $ animateCSS in Javascript-definierte Animationen injiziert wird. Wenn bewegte Animationen ausgelöst werden, werden immer alle ausstehenden oder aktiven Elternklassen-basierten Animationen (mit ngClass) beendet.