다음 사례가 있습니다. AngularJS 응용 프로그램에서 라우팅에 ui-router를 사용하고 있습니다. 한 경로에는 여러 하위 화면에 대해 다섯 개의 하위 상태가 있습니다. 나는 회전 목마와 같은 방식으로 이들 사이의 전환을 애니메이션으로 만들고 싶다.경로 변경을위한 두 개의 다른 애니메이션
탐색은 다음과 같습니다
왼쪽 밖으로screen A
슬라이드 및 오른쪽에서
screen B
슬라이드를해야
state A
state B
까지 탐색
Link to A | Link to B | Link to C | Link to D | Link to E
; 그 반대의 경우는 state B
에서 state A
까지입니다. 작업은 한 방향으로 enter
및 leave
에 transform: translateX(...);
로 화면 전환 애니메이션입니다 무엇을
.
보통 깃발이 달린 ng-class
을 사용하여 내 애니메이션을 제어합니다. 그러나이 경우, ui-view
요소의 클래스 설정은 전혀 작동하지 않습니다 (각도 1.2 및 ui-router 0.2는 아직 완전히 호환되지 않습니다). 또한 전환이 시작된 후 해고되는 scope.$on "$stateChangeStart"
을 경청하는 사용자 정의 지시문으로 설정하는 것도 아닙니다.
원하는 동작을 어떻게 구현할 수 있습니까?
편집 : 기록을위한 솔루션
: 나는 경로를 변경하기 전에 방향을 결정하기 위해 $state.go()
를 사용하여 사용자 정의 $scope
기능을 사용하여 구현 끝났다. 이렇게하면 $digest already in progress
오류가 발생하지 않습니다. 애니메이션을 결정하는 클래스는 ui-view
의 부모 요소에 추가됩니다. 이것은 현재뿐만 아니라 미래도 ui-view
올바른 방향으로 움직입니다.
컨트롤러 기능 (커피 스크립트) :
go: (entry) ->
fromIdx = ...
toIdx = ...
if fromIdx > toIdx
$scope.back = false
else
$scope.back = true
$state.go entry
템플릿 :
<div ng-class="{toLeft: back}">
<div ui-view></div>
</div>
ng-animate의 자바 스크립트 기반 애니메이션 변형을 사용할 수 있습니까? 여기서 애니메이션을 적용 할 위치를 확인하고 방향에 따라 다른 애니메이션을 적용 할 수 있습니까? – kontur
@kontur : 구현 방법을 알고 있다면 자유롭게 답을 추가하십시오 :). –