2014-03-03 2 views
0

아마도 내가하려는 일을 볼 수있을 것입니다. 내가 transitionTo() 자식 상태 onEnter() 루트 경로 싶어요. auth 해결 방법은 회사 또는 사용자가 로그인했는지 여부를 결정합니다. 현재는 무한 루프로 진행되는 것처럼 보이지만 그 이유는 모르겠습니다. 나에게 올바른 방향으로 나를 가르키면 알려주세요. 감사. 당신이 무한 루프에 대한 권리 경우Angular.js ui-router는 부모와 동일한 URL로 인증을 기반으로 onEnter()에서 자식 상태를 호출합니다.

$stateProvider 
    .state "home", 
    template: '<ui-view autoscroll="false"/>' 
    abstract: true 
    url: "/" 
    resolve: 
     auth: (Auth) -> Auth.loggedIn() 
    onEnter: ($state, auth) -> 
     if auth.data.user? and auth.data.user 
     $state.transitionTo("home.user") 
     else if auth.data.company? and auth.data.company 
     $state.transitionTo("home.company") 

    .state "home.user", 
    url: '' 
    controller: "UsersController" 
    templateUrl: "<%= asset_path('users/ang_search_jobs.html.erb') %>" 

    .state "home.company", 
    url: '' 
    controller: "JobListingCtrl" 
    templateUrl: "<%= asset_path('job_listings/ang_full_user_matches.html.erb') %>" 
+0

현재이 https://github.com/angular-ui/ui-router/issues/929를 살펴보면 – dasnixon

답변

0

, 나는 초기 home 경로로드가 완료되기 전에 transitionTo 호출이 일어나는 것을 추측하고있다. 그러면 home 상태가 다시로드되기 시작합니다.

대신 사용자 데이터가 삽입 된 홈 상태의 컨트롤러를 사용하고 거기에서 transitionTo을 수행합니다. 그렇지 않으면 라우터 제공자 .when()을 사용하여 사용자 데이터를 주입하여 거기에서 transitionTo을 수행합니다.