Aurelia очищает историю маршрутов при переключении на другое приложение с помощью setRoot

Маршрутизатор Aurelia запоминает, на какой странице я был в последний раз, даже после использования setRoot(), и перенаправляет меня на эту страницу, даже если я захочу снова попасть на главную страницу приложения.

Я постараюсь объяснить это в случае использования. У меня есть два приложения: login а также app, Я вхожу в login приложение и перенаправить на app, Я перехожу к /securedPage на app а затем перейдите к выходу из системы и получите перенаправление на login снова. Я вхожу с другим пользователем на login и тогда меня перенаправляют на app/securedPage , Я хочу быть и должен быть перенаправлен просто app,

Как очистить историю маршрутов при переключении между приложениями с помощью setRoot()?

3 ответа

Решение

Хотел помочь, недавно получил эту работу и предложения выше почти работают, но они пропускают некоторые части. В этой теме создатель Аурелии (Айзенберг) отвечает предложением: https://github.com/aurelia/framework/issues/590

Чтобы переключить корень приложения, сделайте следующее:

    this.router.navigate('/', { replace: true, trigger: false });
    this.router.reset();
    this.router.deactivate();

    this.aurelia.setRoot('app');

В моем случае я мог бы пропустить сброс и деактивировать часть и просто сделать

    this.router.navigate('/', { replace: true, trigger: false });

Однако, выполнение this.router.navigate('/') без части замены и триггера вызвало проблемы, особенно при многократном переключении корня приложения.

Поэтому обязательно добавьте:

     ... { replace: true, trigger: false });

Ты пробовал

this.router.deactivate();
this.router.reset();
this.app.setRoot('app');

Это не красиво, но это помогло мне:

router.navigate("/");
aurelia.setRoot("login")
Другие вопросы по тегам