2016-07-25 21 views
0

我正在使用ui-route進行路由。有多種順序形式。 當我提交表單後,我想要到下一步表單(步驟)。 我不想在$ state.go()函數中硬編碼步驟名稱。 有沒有辦法獲得下一個和前一個狀態?如何移動到Angular.js中的下一個或上一個步驟?

$stateProvider 
       .state("Cars", { 
        url: "/", 
        templateUrl: "/rc1/renderStep/cars", 
       }) 
       .state("Drivers", { 
        url: "/drivers", 
        templateUrl: "/rc1/renderStep/drivers", 
        controller: "renderStepCtrl", 
       }) 
     }]) 

狀態改變呼叫

$scope.onSubmit = function() { 
        postDtoFactory.postDto(); 
        console.info('current page= '+$state.current.name); 
        //console.log('prev = '+$state.previous.route.name); 
        $state.go(); 
       }; 
+0

$ state.current.name ++; ???不知道你想要什麼 如果它不是一個數字,你有一個「下一個狀態」的映射我們在這裏丟失了很多上下文 –

+0

$ state.current.name給出當前狀態名稱,當我調用$ state .go()這個shold重定向到Drivers狀態。 。如果我在汽車頁面,這是下一個狀態。 –

+0

你有這樣的東西嗎?或者你可以做一個決定下一個狀態應該是什麼的函數?如果是這樣,你可以在當前範圍或w/e上調用該函數。 這聽起來像邏輯,你不能神奇地工作,但需要一些手動編碼。 –

回答

1

手動保存以前的狀態,通過creationg監聽器

$rootScope.$on('$stateChangeSuccess', function(event, to, toParams, from, fromParams) { 
     //save the previous state in a rootScope variable so that it's accessible from everywhere 
     $rootScope.previousState = from; 
    }); 
    }]); 
$scope.onSubmit = function(){ 
    //if u want to go on previous state 
    $state.go($rootScope.previousState.name) 
} 
+0

非常酷的解決方案 – Thatkookooguy

+1

謝謝Thatkookooguy :) – urvashi

+0

謝謝,以及如何獲得下一步。 $ state.go($ rootScope.nextState.name),它會工作嗎? –

相關問題