1

我有一个关于骨干路由器的问题,请帮助:

我有一个路由器:

define(['views/index', 'views/login'], function(indexView, loginView) {

    var SelinkRouter = Backbone.Router.extend({

        currentView: null,

        routes: {
            'home': 'home',
            'login': 'login'
        },

        changeView: function(view) {
            if(null != this.currentView)
                this.currentView.undelegateEvents();
            this.currentView = view;
            this.currentView.render();
        },

        home: function() {
            this.changeView(indexView);
        },

        login: function() {
            this.changeView(loginView);
        }
    });

    return new SelinkRouter();
});

当用户第一次到达我的站点时,“登录”路由被触发,并将他们带到登录页面,登录后,用户通过:window.location.hash =“home”导航到“home”路由。现在用户看到主页的网址看起来像:mysite.com/#home,这很好。

问题是,此时如果我按 F5 键或以其他方式刷新页面,尽管再次触发了“主页”路由(这很好),同时重新加载了整个页面并且我的所有 js 都重新加载了. 所以应用程序重新启动,它带我回到登录页面(太糟糕了)。

有没有人有同样的问题?我应该停止页面刷新吗?如何?

非常感谢您的任何想法。

4

1 回答 1

0

在我看来,最好的选择是为您的登录设置一个单独的页面。虽然这听起来像是一个逃避的答案,但我认为登录页面应该是进入您的应用程序的网关,而不是应用程序本身的一部分。

于 2013-04-23T13:56:01.147 回答