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