La struttura che hai fornito dovrebbe effettivamente fare esattamente quello che stai descrivendo.
Dai un'occhiata a this twiddle per vedere un esempio. Facendo clic su "Visualizza utente" si passerà alla rotta user.view
, ma facendo clic su "Modifica utente" si solleverà un'eccezione nella rotta user.edit
e invece si sbarcherà sulla rotta error
.
Una cosa da notare è che non si deve aggiungere il percorso di errore in router.js
. Riceve l'errore di transizione come modello, quindi se fai manualmente this.route('error')
e non gli dai un segmento dinamico, la transizione fallirà.
Se si desidera un maggiore controllo sulla esattamente ciò che accade quando si verifica un errore durante qualsiasi transizione, è possibile implementare l'azione error
lungo il percorso dell'applicazione.
actions: {
error(thrownError) {
this.transitionTo('my-error-route'); // Or whatever other handling you want
}
}
Si può vedere un esempio completo di un tale accordo in this twiddle. Si noti che questo è leggermente diverso da default error behavior in quanto produrrà una transizione completa (ad esempio l'URL verrà aggiornato) anziché spostarsi semplicemente in un substate.
Bene, la tua risposta non ha risolto il problema nella mia domanda, ma hai dimostrato che è necessario. +50 – medokin