具有可选'/'s和查询参数
Backbone routes with optional '/'s and query parameters
希望设置一个骨干路由,该路由与一个看起来像这样的url匹配,该url是其所有"直观"衍生物"
基本格式:http://www.domain.com/PageName/:argument示例:http://www.domain.com/PageName/1234567890
在我看来,"直观"的衍生品将是所有这些网址:
基本url:http://www.domain.com/PageName/1234567890带有尾部斜线:http://www.domain.com/PageName/1234567890/带有查询参数的基本url:http://www.domain.com/PageName/1234567890?x=1尾部斜线和查询参数:http://www.domain.com/PageName/1234567890/?x=1
问题是主干路由变得非常丑陋:
路由:{"PageName/:argument":"main","PageName/:argument/":"main","PageName/:argument/?:params":"main","PageName/:参数?:params":"main"}
我觉得这条路线应该可以用一行来表达,而不是用四行来表达。此外,我不需要将url参数作为参数发送,我只是无法在不这样做的情况下使其工作。
如何更好地指定此路线?
此外,我是否错误地处理了这个问题?我觉得我一开始就有这个问题可能与对这个问题的更根本的误解有关。
谢谢!
您尝试过使用.route()
和regex吗?如果您想拥有可选的路由元素,那么regex可能是您的选择。这意味着用.initialize()
而不是routes
散列来定义路由,但这将解决您的问题,并且涉及更少的代码。
我还没有测试过,但我认为它看起来像:
initialize: function(options) {
this.route(/PageName'/([^'/'?]+)'/?'??(.*)/, "main");
}
(测试正则表达式暴露了一个小问题:params参数会得到一个空字符串,而不是undefined
。但这可能对你来说不是问题。)
相关文章:
- 如何将参数赋予作为查询参数的参数值给定的函数
- 具有可选'/'s和查询参数
- 如果没有Ember中的控制器,我如何更改查询参数
- 如何编码&在不是't是查询参数的一部分
- 如何在JavaScript中传递查询参数和重定向
- React 路由器和任意查询参数:页面在加载时无意中刷新
- MongoDB查找查询参数
- 布尔查询参数被 Sails.js 视为字符串
- jQuery脚本,它搜索现有的查询参数并且不添加“"如果存在
- 基于查询参数的可选承诺步骤
- 如何使用Backbone.Return捕获查询参数的更改
- 在iron router中使用查询参数修改模板
- 如何将查询参数设置为我的所有路线,当它改变时-在恩伯
- 如何使用查询参数在jQuery中生成url
- Javascript/jQuery URL查询参数解析
- Ember.js查询参数不尊重replace:true并使用replaceState
- jQuery将查询参数附加到当前哈希中,忽略重复项
- window.location.href未设置查询参数
- 如何在angular中访问URL中的查询参数(在hash之外,非html 5模式)
- 获取具有主干木偶查询参数的当前 URL