2014-11-03 6 views
1

사용하여 위치 인식 NG-보기 탐색 ...AngularJS와 - 나는 AngularJS와에 대한 완전한 멍청한 놈 내 첫 번째 프로젝트 구축을 시작하고 모든 단계에서 장애물을 타격 한 TweenMax

내가 구축하기 위해 노력하고있어 아주 간단한 일이, 여기에 내가 달성하기 위해 노력하고있어의 요점이다 :

  • 를 내가 5 페이지/당겨와이 문서를 기반으로 JSON 데이터를 사용하여 만든 얻을 전망이 - blog.brunoscopelliti.com/how -to-defer-route-definition-in-an-angularjs-web-app를 사용합니다. 어느 것이 공장에 배선되어 있습니다. 해서 getJSON()

    function($route, $location, $http, $q) { 
    
    var jsonLoaded = {}; 
    
    jsonLoaded.getJSON = function() { 
    
        var deferred = $q.defer(); 
        $http.get('pages.json').success(function(data) { 
         deferred.resolve(data); 
        }).error(function() { 
         deferred.reject(); 
        }); 
        return deferred.promise; 
    } 
    return jsonLoaded;  
    
  • 뷰 탐색 할 때, I는 계층 카루셀 전환 효과를 갖고 싶다. 즉, 인덱스 0을 클릭하면 인덱스 1을 오른쪽에서 왼쪽으로 탐색하고 인덱스 0을 다시 클릭하면 뷰가 왼쪽에서 오른쪽으로 이동합니다. 이것은 내 일정에있는 animate.js 파일에서 조건부로 지정됩니다 hasClass()를 사용하여.

내가 3 개 주 별도의 plunks와 옵션 시도 : 사용

옵션 1 클래스 추가 NG를 클릭 - http://plnkr.co/edit/0mrebo8BMlrz1YkttxsT?p=preview

$scope.navDirection = function(pageClass) { 
    $scope.pageTransClass = pageClass; 
}; 
  • 이 가장 좋은 결과를 얻을 수를, 원하는대로 정확히 탐색하고, 브라우저의 뒤로 또는 앞으로 버튼을 클릭 할 때 클래스가 동일하게 유지되는 문제가 발생합니다.

  • 입장 및 퇴실보기에 대한 클래스를 추가/변경합니다.

옵션 2 사용하여 $의 routeProvider의 해결 - 클래스를 추가 할 때이 지연이 발생 http://plnkr.co/edit/SPfgKUyYt7LMQITHzj2I?p=preview

resolve: { 
    direction: ["changePageDirection", 
     function(changePageDirection) { 
      return changePageDirection.direction($route.current.params.pageId, $routeParams.pageId); 
     } 
    ] 
} 
  • , 즉는 정말 3 탐색 항목을 클릭 작업을 시작합니다.

  • 이 메서드는 "enter"애니메이션에 클래스를 추가/변경하지만이 "leave"는 이전 클래스를 유지합니다.

옵션 3 관찰하여 - http://plnkr.co/edit/TwtkGrY1Ww4uYY8n2LO5?p=preview

return function(scope, element, attrs) { 

    attrs.$observe("pageDirectionObs", function (value) { 
     if (value) { 
      element.addClass(value); 
     } 
    }); 
}; 
  • 2 만 정말 3 클릭에 일을 시작이 같은 옵션.

  • 이 방법은 "입력"애니메이션의 클래스를 추가/변경하지만이 "이탈"은 이전 클래스를 계속 유지합니다.

내 주요 문제 이해 (또는 그 부족) $의 범위 및 AngularJS와 모든 것을 컴파일하는 방법 중 하나라고 생각하기 시작하고있다.

나는 몇 주 동안 지금 여기에 있었고, 내가 어디에 있어야하는지 가깝지 않습니다. 어떤 도움이라도 대단히 감사하겠습니다.

미리 감사드립니다.

UPDATE : 여기

  • 는 UI 뷰 및 UI - 뷰 - 엑스트라 여기

  • 를 사용하여 4 예이다는 쿵하는 소리입니다 - embed.plnkr.co/vjSBLzMMKIrkHD7sOctN/preview

+0

누구로부터 어떤 제안이 있습니까 ??? – Lawless

+0

나는 어둠 속에서 찌르다, 내가 선택한 마지막 방향은 브라우저 버튼을 클릭했을 때 전환이 일어나는 방향이라는 것을 알았다. 추측 해 보면 캐싱 문제이거나 전환이 발생하기 전에 약속이 해결되지 않았을 수 있습니다. 전환이 약속 외부에서 발생하기 전에 필요한 전환에 대해 클래스를 변경해 볼 수 있습니다. 전에 문제를 해결하지 않았다면 내일 또 다른 모습을 보게 될 것입니다. –

+0

첫 번째 예 (ng-click을 사용하여 클래스를 뷰에 연결하는 예제)에서 올바른 결과를 얻었습니다. 이는 내가 찾고있는 것과 가장 가까운 최종 결과를 생성합니다. 즉, 클래스를 입력 및 이탈보기에 연결합니다. 다른 예는 뷰에 클래스를 첨부하지만 이전 뷰가 아닌 대상 뷰에만 연결됩니다 (즉, DOM을 벗어나는 뷰). 나는 ui-router와 ui-router-extras를 사용하여 네 번째 시도를 만들었습니다. 그러나 다시 들어오는 시각에 대해서만 수업을 진행할 수 있습니다. – Lawless

답변

0

내 솔루션은 실제로 매우 간단했습니다. 각 방향에 대한 클래스를 변경하는 대신 $ rootScope에 변수를 첨부했습니다.이 변수는 페이지 전환 이전에 변경되고 클래스 대신 $ rootScope 변수를 기반으로 애니메이션을 기반으로합니다.