Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Backbone.js 如何防止用户直接在地址栏上使用路由器URL?_Backbone.js - Fatal编程技术网

Backbone.js 如何防止用户直接在地址栏上使用路由器URL?

Backbone.js 如何防止用户直接在地址栏上使用路由器URL?,backbone.js,Backbone.js,我已经使用主干路由器做了一些工作示例,但是有没有办法保护直接在地址栏上使用的路由?此外,当用户按下浏览器上的“后退”按钮时,路由不会被清除,并产生问题。最好的解决方案是什么?我想我明白你的意思了-你想强迫用户通过某个(主页)页面进入你的网站。对吗 这很有用,例如,当你正在构建一个移动优化的web应用程序时,你总是希望用户通过启动屏幕进入。我要做的是为我的路由器设置一个“legitEntrance”属性,并在每条路由上检查它,如下所示: APP.Router = Backbone.Router.e

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

我想我明白你的意思了-你想强迫用户通过某个(主页)页面进入你的网站。对吗

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

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();
 }

 ....
});

我相信这段代码可以被清理一些,但是你已经明白了大概的意思。希望有帮助。

直接在地址栏上是什么意思?后退按钮问题可以通过使用
主干.history
对象和对路由器实例上的
导航的调用来解决。您的问题太模糊了。请发布更多关于您看到的行为和您期望的行为的详细信息,并包括一些说明您正在做什么的代码。谢谢。这对我来说很有用。导航(“home”,{trigger:true});就是我要搜索的代码。