Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于firebase身份验证限制Javascript中的路由_Javascript_Firebase_Routing_Firebase Authentication - Fatal编程技术网

基于firebase身份验证限制Javascript中的路由

基于firebase身份验证限制Javascript中的路由,javascript,firebase,routing,firebase-authentication,Javascript,Firebase,Routing,Firebase Authentication,我正在构建一个javascript应用程序。此应用程序使用一个名为jq-router的插件。当我执行如下操作时,地址栏会更改,但视图无法更改 $.router.onRouteBeforeChange(function(e, route, params){ firebase.auth().onAuthStateChanged(function(user){ if(!user && route.protected) { $.router

我正在构建一个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.
        }
    });
});
您可以在此处访问整个插件:


同样,预期的结果是视图和地址栏更新。当前唯一更新的是地址栏,视图仍然呈现。

您应该使用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.
        }
    });
});
$.router.onViewChange(函数(e、viewRoute、route、params){
firebase.auth().onAuthStateChanged(函数(用户){
如果(!user&&route.name!==“landing”&&route.protected){
$.router.go('landing',{});
$.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.
        }
    });
});