从路由功能之前的骨干重定向

时间:2014-01-21 19:18:28

标签: jquery redirect backbone.js

我有一个在骨干应用程序中的每个路径之前运行的函数

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函数中重新路由的任何建议吗?

1 个答案:

答案 0 :(得分:1)

将最后一位包装在else块中

} else {
    callback.apply(router, arguments);
}