2013-12-15 24 views
9

mio ui router config è come questo:router ui angolare: metodo sul controller di chiamare da onEnter

$stateProvider 
    .state("list",{url:"/list",templateUrl:"list.html",controller:"ctrl as vm"}) 
    .state("list.select", 
     url:'/select', 
     templateUrl:'select.html', 
     onEnter:function() { ... } 
    }); 

Lo stato list.select utilizza lo stesso controller come lo stato lista. Come posso chiamare un metodo sul controller dalla funzione onEnter? Nota che sto usando la sintassi "ctrl as vm"! Posso anche accedere a $ stateParams qui?

risposta

2

Si può certamente accedere a $stateParams in onEnter, così come ogni altro servizio. Tuttavia, non c'è modo di iniettare l'istanza del controller corrente o genitore (o qualsiasi altro).

Così, mentre non si può invocare un metodo sul controller in questo modo, è possibile utilizzare onEnter o resolve per pre-elaborare qualcosa e magari utilizzare una bandiera per list.select per controllare e chiamare tale metodo.

Potrebbe anche essere più logico utilizzare un servizio per coordinare questa funzionalità, ma non conosco gli scopi del tuo approccio, quindi avrei bisogno di saperne di più.

+0

Ho risolto il problema utilizzando la risoluzione sulla configurazione dello stato. Non tentare di chiamare il metodo sul controller, ma risolvere i dati necessari per il controller con i parametri di risoluzione dello stato di configurazione – rekna

+7

@rekna puoi fornire il tuo esempio? Sto correndo nello stesso caso. Grazie – jmcollin92

Problemi correlati