Cha*_*les 5 backbone.js backbone-routing
我的应用程序基本上采取一些形式输入并返回一组结果.我有两条路线
routes: {
'': 'search',
'search': 'search',
'results/:query': 'results'
},
results: function(query) {
var search = new ResultsSearchView();
var grid = new GridView({ query: query });
}
Run Code Online (Sandbox Code Playgroud)
如果查询包含任何字符/具体(在这种情况下可能完全发生),它们将被添加到URL并且我的路由中断.
我尝试过使用encodeURI(),encodeURIComponent()我没有运气.你们这些人怎么处理这些事情?
您可以encodeURIComponent在构建 URL 时使用将其转换/为%2F,然后decodeURIComponent在路由处理程序中将它们转换回来;HTML 最终看起来像这样:
<a href="#results/pancakes">no slash</a>
<a href="#results/where%2Fis%2Fpancakes%2Fhouse">with slashes</a>
Run Code Online (Sandbox Code Playgroud)
然后在路由器中:
routes: {
'results/:query': 'results'
},
results: function(query) {
query = decodeURIComponent(query);
// Do useful things here...
}
Run Code Online (Sandbox Code Playgroud)
演示: http: //jsfiddle.net/ambiguously/sbpfD/
或者,您可以使用splat 路线:
路由可以包含参数部分 ,
:param它匹配斜杠之间的单个 URL 组件;和 splat parts*splat,它可以匹配任意数量的 URL 组件。
所以你的 HTML 应该是这样的:
<a href="#results/pancakes">no slash</a>
<a href="#results/where/is/pancakes/house">with slashes</a>
Run Code Online (Sandbox Code Playgroud)
和你的路由器:
routes: {
'results/*query': 'results'
},
results: function(query) {
// Do useful things here...
}
Run Code Online (Sandbox Code Playgroud)
演示: http: //jsfiddle.net/ambiguously/awJxG/
| 归档时间: |
|
| 查看次数: |
1637 次 |
| 最近记录: |