当传递到路由的查询包含时,backbone.js路由/
我的应用程序基本上接受一些表单输入并返回一组结果。我有两条路线当传递到路由的查询包含时,backbone.js路由/,backbone.js,backbone-routing,Backbone.js,Backbone Routing,我的应用程序基本上接受一些表单输入并返回一组结果。我有两条路线 routes: { '': 'search', 'search': 'search', 'results/:query': 'results' }, results: function(query) { var search = new ResultsSearchView(); var grid = new GridView({ quer
routes: {
'': 'search',
'search': 'search',
'results/:query': 'results'
},
results: function(query) {
var search = new ResultsSearchView();
var grid = new GridView({ query: query });
}
如果查询包含任何字符/特别是(在这种情况下完全可能发生),它们将被添加到URL,并且我的路由中断
我试过使用encodeURI()
和encodeURIComponent()
位,但运气不好。您是如何处理这些事情的?您可以在构建URL时使用,将/
转换为%2F
,然后在路由处理程序内部将它们转换回来;HTML将以如下方式结束:
<a href="#results/pancakes">no slash</a>
<a href="#results/where%2Fis%2Fpancakes%2Fhouse">with slashes</a>
<a href="#results/pancakes">no slash</a>
<a href="#results/where/is/pancakes/house">with slashes</a>
演示:
或者,您可以使用:
路由可以包含参数部分,:param
,在斜杠之间匹配单个URL组件;和splat部分*splat
,可以匹配任意数量的URL组件
因此,您的HTML如下所示:
<a href="#results/pancakes">no slash</a>
<a href="#results/where%2Fis%2Fpancakes%2Fhouse">with slashes</a>
<a href="#results/pancakes">no slash</a>
<a href="#results/where/is/pancakes/house">with slashes</a>
演示:使用splat路线,效果很好。谢谢你的帮助。