2013-04-23 147 views
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”路由。现在用户看到主页的url看起来像:mysite.com/#home,这很好。

问题是,在这一点上,如果我点击F5键或以其他方式刷新页面,虽然“主页”路线被再次触发(这很好),同时整个页面被重新加载, js再次被重新加载。所以应用程序重新启动,它带我回到登录页面(太糟糕了)。

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

非常感谢您的任何想法。

回答

0

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

+0

感谢征求建议。 Indeer,我正在考虑同样的事情。但我仍然想知道为什么会出现意想不到的事情。并且我想要做一个“平滑的”登录效果,而不用页面跳转。 – 2013-04-24 01:00:53