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
Javascript 动态页面上的主干路由器配置_Javascript_Backbone.js_Backbone Routing - Fatal编程技术网

Javascript 动态页面上的主干路由器配置

Javascript 动态页面上的主干路由器配置,javascript,backbone.js,backbone-routing,Javascript,Backbone.js,Backbone Routing,我有一个php页面,它通过get请求加载,并包含多个参数,如:index.php?page=6&name=Virginia。加载页面后,我初始化主干,并使用它呈现页面部分的视图。问题是,路由器似乎正在获取我的整个url并注册它,因此为了触发路由,我必须将以下内容附加到我的链接:。这很管用,但很难看。我已尝试将根参数更改为Backbone.history.start,但似乎无法使其正常工作。我相信大多数人不会从一个带有查询参数的动态页面开始,但是任何帮助都是非常感谢的。我尝试过各种各样的解决方案,

我有一个php页面,它通过get请求加载,并包含多个参数,如:index.php?page=6&name=Virginia。加载页面后,我初始化主干,并使用它呈现页面部分的视图。问题是,路由器似乎正在获取我的整个url并注册它,因此为了触发路由,我必须将以下内容附加到我的链接:。这很管用,但很难看。我已尝试将根参数更改为Backbone.history.start,但似乎无法使其正常工作。我相信大多数人不会从一个带有查询参数的动态页面开始,但是任何帮助都是非常感谢的。我尝试过各种各样的解决方案,从插件到不同的正则表达式,但都没有用

没有pushState,您根本无法做到这一点。我会这样做:

var router = Backbone.Router.extend({
  routes: {
    '*url': 'defaultRoute'
  },

  defaultRoute: function(url) {
    // just url argument and parse params out
  }
});

事实上,这对你来说是最简单的。对于params,您需要一个包含
get
set
delete
方法的类,这非常简单,您可以找到大量示例。

这不是典型的主干路由器情况。您的pushState是true还是false?我知道这不典型,但我尝试将pushState都设置为true/false,但在两个事件中均未成功。感谢您的示例,但这仍然不起作用,因为我仍然需要匹配链接中的查询参数,否则主干将无法正确截获事件,浏览器将导航到别处。否,实际上,这将捕获所有url更改。顺便说一句,你从来没有显示过你的代码。至少,如果您显示
路由
声明,它会有所帮助。再次,您好,它不能捕获所有url更改(我正在运行一个超级简化的示例,其中只包含您发布的代码片段),而且仍然不起作用。在对主干进行了一点调试之后,我认为问题在于:a)主干通过调用:$(window.bind('hashchange',this.checkUrl);,注册对url的更改。为了正确触发此事件,我需要在触发click事件的链接中保留相同的动态参数,否则将永远不会通知主干。我想这更像是haschange事件的实现。