我有一个在骨干应用程序中的每个路径之前运行的函数
route: function(route, name, callback) {
var router = this;
if (!callback) callback = this[name];
var beforeRoute = function() {
var location = Backbone.history.fragment;
var status = this.authorize();
if(location =="" && status['logged_in'] == true){
router.navigate("stream", {trigger: true});
} else if(location !="" && status['logged_in'] == false){
router.navigate("login", {trigger: true});
}
callback.apply(router, arguments);
};
return Backbone.Router.prototype.route.call(this, route, name, beforeRoute);
},
这是在我的路由器中,基本上它会检查用户是否在每次通话时都已登录。我的问题是
router.navigate("stream", {trigger: true});
不会按预期触发(应重定向到流路由)。我试过这个.navigate并尝试设置route =“stream”但没有按预期重定向 - 除了重新分配window.location导致页面重新加载,不适合应用程序。
有关如何从此beforeRoute函数中重新路由的任何建议吗?
答案 0 :(得分:1)
将最后一位包装在else块中
} else {
callback.apply(router, arguments);
}