0

已经使用 Backbone Router 完成了一些工作示例,但是有没有办法保护直接在地址栏上使用的路由?而且当用户按下浏览器上的后退按钮时,路由不会被清除并会产生问题。什么是最好的解决方案?

4

1 回答 1

0

我想我明白你在说什么 - 你想强迫用户通过某个(主页)页面进入你的网站。那是对的吗?

这很有用,例如,当您构建移动优化网络应用程序时,您总是希望用户通过启动屏幕进入。我要做的是为我的路由器设置一个“合法入口”属性,并在每条路由上检查它,如下所示:

APP.Router = Backbone.Router.extend({
 legitEntrance: false,

 // Just a helper function
 setLegitEntrance: function() { 
  this.legitEntrance = true; 
 },

 // Send the user back to the home page
 kickUser: function() {
  this.navigate("home", {trigger:true});
 },

 routes : {
  ...
 },

 // Example router function: Home page
 routeToHome: function() {
  this.setLegitEntrance();
  var homeView = APP.HomeView.extend({ ... });
  homeView.render();
 },

 // Example router function: some other internal page
 routeToSomeOtherInternalPage: function() {
  if(!this.legitEntrance) {
   this.kickUser();
   return;
  }

  var someOtherInternalView = APP.SomeOtherInternalView.extend({ 
   ...
  });

  someOtherInternalView.render();
 }

 ....
});

我确信这段代码可以清理一些,但你明白了。希望能帮助到你。

于 2012-05-08T13:16:48.410 回答