Struktura, którą podałeś, powinna faktycznie zrobić dokładnie to, o czym mówisz.
Proszę spojrzeć na this twiddle, aby zobaczyć przykład. Kliknięcie przycisku "Wyświetl użytkownika" spowoduje przejście do trasy user.view
, ale kliknięcie przycisku "Edytuj użytkownika" spowoduje zgłoszenie wyjątku na trasie user.edit
, a zamiast tego wyląduje na trasie error
.
Należy pamiętać, że użytkownik nie powinien dodać trasy błędu samodzielnie w router.js
. Otrzymuje błąd przejścia jako swój model, więc jeśli ręcznie wykonasz this.route('error')
i nie otrzymasz segmentu dynamicznego, przejście nie powiedzie się.
Jeśli chcesz mieć większą kontrolę nad tym, co dokładnie dzieje, gdy wystąpi błąd podczas dowolny przejściowym, można wdrożyć działania error
na trasie aplikacji.
actions: {
error(thrownError) {
this.transitionTo('my-error-route'); // Or whatever other handling you want
}
}
Można zobaczyć pełną przykładem takiego układu w this twiddle. Zauważ, że jest to subtelnie odmienne od default error behavior, ponieważ spowoduje całkowite przejście (tzn. URL zostanie zaktualizowany), a nie tylko przejście do podstanu.
Cóż, twoja odpowiedź nie rozwiązała problemu w mojej aplikacji, ale udowodniłeś, że to powinno. +50 – medokin