Ограничить маршруты в Javascript на основе аутентификации Firebase - PullRequest
0 голосов
/ 24 мая 2018

Я создаю приложение javascript.Это приложение использует плагин под названием jq-router.Когда я делаю что-то вроде следующего, адресная строка изменяется, но представление не изменяется.

$.router.onRouteBeforeChange(function(e, route, params){
    firebase.auth().onAuthStateChanged(function(user){
        if(!user && route.protected) {
            $.router.go('landing', {}); <!-- This line calls the plugin.
        }
    });
});

Функция в плагине, который вызывается выше, выглядит следующим образом.

/**
 * Navigates to given route name & params
 * @params {string} routeName
 * @params {object} params
 * @return {object} this
 */
s.go = function(routeName, params) {
    var s = this;
    paramSrv.setParams(params);
    window.location = s.href(routeName, params);
    return s;
};

Вы можете получить доступ ко всему плагину здесь: https://github.com/muzammilkm/jq-router

Опять-таки, ожидаемый результат - обновление представления и адресной строки.В настоящее время обновляется только адресная строка, представление по-прежнему отображается.

1 Ответ

0 голосов
/ 04 октября 2018

Вы должны использовать события onViewChange / onRouteChanged, а также исключить маршрут посадки, избегая круговой петли.Событие onRouteBeforeChange предназначено для уведомления о том, что маршрут собирается измениться, чтобы можно было выполнить любую операцию очистки.

$.router.onViewChange(function(e, viewRoute, route, params){
    firebase.auth().onAuthStateChanged(function(user){
        if(!user && route.name !== "landing" && route.protected) {
            $.router.go('landing', {}); <!-- This line calls the plugin.
        }
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...