由页面刷新触发的骨干路由器

时间:2013-04-23 07:58:20

标签: backbone.js page-refresh backbone-routing

我对骨干路由器有疑问,请帮忙:

我有一台路由器:

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 ”。现在用户看到网页的网址如下:mysite.com/#home,这很好。

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

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

非常感谢任何想法。

1 个答案:

答案 0 :(得分:0)

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