0

Резюме:
РАБОТЫ
1) Кнопка входа в систему
2) см главную страницу с помощью кнопки test1 и выйти
3) нажмите Выход
4) получить логаут и доставлены в страницу регистрации
Aurelia setRoot работает, когда в домашней странице, но не на странице ребенка

НЕ РАБОТАЕТ
1) войти в
2) см главную страницу с помощью кнопки test1 и выйти кнопку
3) нажмите test1
4) получить приняты к test1 странице
5) нажмите выйти
ERROR [приложение-маршрутизатор] Ошибка: Путь не найден:/test1

Я сократил свой код до бит, с которым я борюсь, и сделал плункер, ОДНАКО плункер не любит тег для инъекций, который я использую, и поэтому не отображает. Вы все еще можете увидеть макет кода, хотя (если кто-то может исправить проблему с инъекцией, которая была бы удивительной).
plunker: http://embed.plnkr.co/V5IoGqDfmo1djd3kW6bZ/

Идея заключается в том, что модуль имеет вход маршрутизатор только с двумя путями - войти и пароль сброса (взятый пароль сброса из plunker, как не имеет значения). Когда пользователь входит в систему, мы устанавливаем root в приложение, у которого есть другой маршрутизатор, к которому может обратиться только тот, кто входит в систему.

После входа в систему, нажатие кнопки выхода из системы приведет к разрушению сеанса и сбросу корня к записи.

Однако, если пользователь входит в систему, нажимает на один из модулей в маршрутизаторе приложения (например, test1), THEN клики выходят из системы, мы получаем ошибку: ERROR [app-router] Ошибка: Маршрут не найден:/test1

Я пробовал:
1) сброс маршрутизатора перед установкой корня (т.е. this.router.reset())
2) навигация по дому перед установкой на корень (т.е. this.router. navigate (''))
3) ответы, предлагаемые здесь:
Aurelia router not working when resetting root
4) предложенные ответы здесь:
Aurelia clear route history when switching to other app using setRoot
Любые предложения были бы оценены, я рад перестроить код, если он принципиально не сработает.

ответ

0

Я не уверен, но я думаю, что это ошибка, которая была исправлена ​​в прошлом, но по какой-то причине она вернулась. Я попробую расследовать.

В качестве решения вы можете использовать в обоих маршрутизаторах mapUnknownRoutes, чтобы перенаправить пользователя на нужный маршрут.Например:

Войти Маршрутизатор

configureRouter(config, router) { 
     config.title = "Super Secret Project"; 
     config.map([ 
      { route: ["","login"], name: 'login', moduleId: "./login", nav: true, title: "Beginscherm" }, 
     ]); 

     this.router = router;  

     //default route, to avoid the "route not found error" 
     config.mapUnknownRoutes(instruction => { 
     return './login'; 
     }); 
    } 

Авторизованный маршрутизатор

configureRouter(config, router) { 
     config.title = "Super Secret Project"; 
     config.map([ 
      { route: [ '', 'screen-1'], moduleId: "./screen-1", nav: true, title: "Beginscherm" }, 
      { route: 'screen-2', name:'screen-2', moduleId: "./screen-2", nav: true, title: "Beginscherm" } 
     ]); 

     //default route, to avoid "route not found" error 
     config.mapUnknownRoutes(instruction => { 
     return './screen-1'; 
     }); 

     this.router = router;   
    } 

Запуск примера https://gist.run/?id=c3990aa3a5cbe22dc05bce2fdda0269a

Пожалуйста, не используйте Plunker, это очень медленно. Вместо этого используйте GistRun :)

+0

спасибо, что Fabio - с тех пор определенно будет использовать GistRun над Plunker! – Naadof

 Смежные вопросы

  • Нет связанных вопросов^_^