2013-11-20 2 views
1

누군가가 이것을 살펴볼 수 있다면 정말 감사 할 것입니다. 그것은 angular.enter와 angular.leave를 사용하는 매우 간단한 앵귤러 슬라이드 쇼이지만, ng-enter와 ng-leave 사이에는 지연이 없어서 제거 할 수 없습니다. ng-enter가 들어가기 전에 ng-finish가 끝나야하지만 두 애니메이션이 동시에 발생하기를 바랍니다.

http://plnkr.co/edit/fqJOYxcSR2wO5g7LPQNy?p=preview

JS :

var myApp = angular.module('myApp', ['ngAnimate']); 

myApp.controller('sCtrl', function($scope) {$scope.clicks = 0}); 

myApp.directive('slidesDirective', function ($animate) { 
    return function (scope, element, attr) { 

      // Sets up and animates the first slide 
      var e1 = angular.element('<div class="slide"><br>Odd Slide<p>Click Me</p></div>'); 
      var e2 = angular.element('<div class="slide"><br>Even Slide<p>Click Me</p></div>'); 

      $animate.enter(e1, element); 

      // Checks if the click counter value has changed. 
      scope.$watch('clicks', function(val) { 

       if (val) { 

       if (val % 2 === 0) { 

        $animate.leave(e2); 
        $animate.enter(e1, element); 

        } else { 
        $animate.leave(e1) 
        $animate.enter(e2, element); 

        } 
       } 
      }) 
    }; 
}); 

HTML : 당신이 요구하는지 내가 생각 달성하기 위해 애니메이션 CSS를 조금 변경했습니다

<div ng-click="clicks = clicks + 1" class="slides" slides-directive></div> 

답변

2

. 애니메이션을 설명하기 위해 DIV를 초록색으로 만들었습니다.

http://plnkr.co/edit/MED5NRJLiBfEaeuCNl3L?p=preview

이 당신이 찾고 있던 무슨 수없는 경우 알려주세요.

+0

사이트가 모바일 장치를 대상으로한다는 것을 제외하고는 내가 찾고있는 것이고, 하드웨어 가속 변환을 사용하여 애니메이션이 매끄럽게 보이기를 바라고 있습니다. 내가 어떻게 그럴 수 있니? translate3D (100 %, 0,0)를 시도했지만 일부 브라우저에서는 제대로 작동하지 않는 것 같습니다 ... translateX는 꽤 잘 지원되는 것 같습니다. –

+0

IOS 시뮬레이터에서 솔루션을 살펴 봤는데 어떤 이유로 정확하게 표시되지 않습니다. 그 대답은 두 애니메이션이 동시에 발생하는 것과 관련이 있다고 생각합니다. –

+0

방금 ​​plnkr이 왼쪽 : 0 대신 translateX를 사용하도록 업데이트했습니다. 잘하면 도움이 되길 바랍니다. Chrome을 사용하고 있기 때문에 여러 브라우저 접두어를 생략 했으므로 나중에 다시 추가해야합니다. –

관련 문제