2016-10-25 54 views
6

Kullanıyorum ui-yönlendirici 1.0.0.beta.3. Bir geçiş sırasında bir sonraki durumun parametrelerini nasıl yönlendirebilirim?Ui yönlendirici: geçişte sonraki durum paramları nasıl alınır

index.run.js

$transitions.onStart({ to: '**' }, verifyAuth); 

function verifyAuth(trans) { 
    let nextState = trans.$to(); 
    if (Auth.verify(nextState.authGroup) === -1) {  
    return $state.go('login', { nextState: nextState.name, nextParams: nextState.params}); // this doesn't work 
    } 
} 

Kimlik doğrulama başarılı sonra bu yüzden, o erişmeye çalışıyordu devlet + devlet params kullanıcıyı yönlendirebilir bunları saklamak istiyor.

:

login.component.js

let nextState = this.$stateParams.nextState; 
let nextParams = this.$stateParams.nextParams; 
$state.go(nextState, nextParams); 

cevap

9

Sorunuzun cevabı ben ui-router 1.0 sample app gerçekleştirdiği kimlik doğrulama kontrolleri ve giriş yönlendirir nasıl okuyan tavsiye Ancak Transition.params()

function verifyAuth(trans) { 
    let nextState = trans.to(); 
    let nextParams = trans.params(); 
    if (Auth.verify(nextState.authGroup) === -1) {  
    return $state.go('login', { nextState: nextState.name, nextParams: nextParams}); 
    } 
} 

olduğunu

Bu kanca giriş durumuna bir $state.target('login')

https://github.com/ui-router/sample-app-ng1/blob/master/app/global/requiresAuth.hook.js#L15-L24

döndürerek açma durumuna, kimlik doğrulaması geçiş yönlendirir, belirlenen "durum giriş sonra geri dönmek için". Orijinal geçişin varış noktasını Transition.redirectedFrom() kullanarak denetler.

https://github.com/ui-router/sample-app-ng1/blob/master/app/main/app.states.js#L44-L83

+0

İyi cevap ama, bir değişiklik olarak ön, sen ben trans 'kullanabilirsiniz bulundu 1.0.5 üzerinde tek seferde bu kadar üstlenmeden işleyemez bir miras projesi ile sıkışmış eğer. $() 've' trans. $ 'dan() 'a değiştirilir. Umarım örnek uygulamanın stratejisiyle devam etmek için bir süre daha tekrar açabilirim. – toxaq