У меня есть приложение polymer starter kit с несколькими подпунктами и различными типами записей, связанных с этими маршрутами. Пример URL может быть //myapp/records/{recordId}/subRoute
. Я бы хотел, чтобы состояние приложения сохранялось при перезагрузке. Я пробовал так:Загрузка пользовательских маршрутов из адресной строки с помощью polymfire
<app-route
route="{{route}}"
pattern="/records/:recordId"
data="{{routeData}}"
tail="{{subroute}}"
></app-route>
<app-route
route="{{subroute}}"
pattern="/:page"
data="{{subRouteData}}"
></app-route>
<firebase-document
id="recordsDocument"
path="/records/[[routeData.recordId]]"
data="{{record}}"
></firebase-document>
...
<script>
routePageChanged(page) { // takes subRouteData.page
if (!user) {
set('page', 'login'),
} else if (!routeData.recordId) {
set('page', 'start')
} else {
set('page', page)
}
}
</script>
Но в этих условиях, браузер всегда будет в конечном итоге на странице входа в систему, так как routePageChanged вызывается перед firebase реагирует с пользователем. Как я могу настроить приложение для правильной загрузки маршрутов адресной строки, которые зависят от существования firebase user
, когда этот объект не существует до тех пор, пока не ответит firebase?
Если я понимаю, ваше предложение, вы рекомендовать, что я, возможно, установить ключ под названием «firebaseUserLoaded» и тест на него перед выполнением чего-либо в '_routePageChanged' на любом из моих маршрутов. Тогда мне казалось бы необходимо настроить ошибку, если есть проблемы с сетью? –
Да, в вашей функции маршрутизации у вас может быть инструкция if, которая проверяет, истинна ли логическая firebaseUserLoaded. Вы устанавливаете этот объект в обратном вызове firebase-auth. Если возникает сетевая ошибка, она войдет в поток ошибок javascript, который я показал выше, в этом случае вам нужно установить переменную в true или false –