主干网是否可以创建一个与所有以某个东西开头的url匹配的路由
Is it possible with backbone to create a route that match all urls beginning with something?
我正在尝试使用匹配'/object/:id'的backbone.js进行路由
问题是,我可以接收到包含任何内容的参数,包括斜杠,然后主干无法识别这个url:/object/1337?var=/hey
我可以忽略get参数吗?或者简单地说我希望我的路由以'/object/:id开始?'?
谢谢。
终于找到了一个解决方案,也许是一个有点难看的
initialize : function() {
this.route(/^object'/([^'?]*)'?/, "show", this.show);
}
我相信这对你有用:
'/object/:id/*splat'
您的"id"参数仍将与您的id匹配,末尾的"splat"将与末尾附加的任何内容匹配。它甚至与任何东西都不匹配。因此,如果您想在没有任何get参数的情况下触发此路由,那么"/object/1337/"将起作用。请注意末尾的斜线。它必须在那里。
你的原始链接/object/1337?var=/hey也应该触发这个路由。
编辑:你可以在上阅读有关飞溅的信息
http://documentcloud.github.com/backbone/#Router-路由
编辑编辑:您的原始链接将使用id和"?"之间的新斜杠
/对象/1337/?var=/hey
我使用以下内容:
// Call for Backbone to make the route regexp
var route = Backbone.Router._routeToRegExp(route_string);
// Change the regexp to ignore GET parameters
route = new RegExp(route.source.replace(/'$/, "'''/?(?:('''?.*$))*$");
// Create a route with a new regexp
// Backbone will not try to make a regexp from the route argument if it's already a RegExp object
this.route(route, name, callback);
如果您只想从片段中分离参数,我建议使用骨干查询参数。
您可以使用常见的主干路由,插件将解析对象中的GET参数,然后将其传递给路由处理程序函数。
从插件的Github页面:
routes: {
'object/:id': 'myRoute'
}
...
myRoute: function(id, params) {
// if the routed url is '/object/1337?var=/hey'
console.log( id ); // ---> '1337'
console.log( param ); // ---> { var : '/hey' }
}
相关文章:
- 如何使用url加载程序在webpack中导入多个图像
- 使用php或javascript从facebook相册URL中删除多余的部分
- 当URL以m.(网站).com开头时,浏览器需要自行调整大小
- Greasemonkey - 如何在以特定字符串开头的页面上查找并打开 aν URL
- 为什么使用MEAN.js应用程序'URL以#开头
- 正则表达式,用于匹配字符串开头的协议相对 URL
- jquery 正则表达式修剪 URL 字符串的开头和结尾
- 缩短 URL 以保留开头和结尾(Firebug “Net” 面板样式)
- 花式框 - URL 以“/”开头的语法错误
- 如何验证正斜杠并将其转换为 url 的开头
- 当将 JavaScript 与 Webpack 捆绑在一起时,require/import URL 开头的 @ 符号是什
- 删除URL开头的字符串
- 我怎么能在一个URL中有两种类型的参数,其中一种以“”开头#"而另一个以“0”开头&"并且不替
- 在正则表达式、javascript中匹配不同的url开头
- 匹配URL的Regex以子域开头,而不是“”;www”;
- 主干网是否可以创建一个与所有以某个东西开头的url匹配的路由
- 在Angularjs中,ui-router访问状态url开头的参数
- 正则表达式,查找不以="开头的URL's
- 在Javascript字符串中的url开头和结尾插入一个字符
- CQ:为什么jquery在我的web服务url的开头添加/ajax