是否有可能在Backbone.js路由中有可選參數?Backbone.js路由可選參數
e.g這樣的:
routes:
"search/[:query]": "searchIndex"
代替:
routes:
"search/": "searchIndex"
"search/:query": "searchIndex"
是否有可能在Backbone.js路由中有可選參數?Backbone.js路由可選參數
e.g這樣的:
routes:
"search/[:query]": "searchIndex"
代替:
routes:
"search/": "searchIndex"
"search/:query": "searchIndex"
從Backbone 0.9.9開始,您可以添加帶括號的可選參數。
例如,在你的路由對象,你可以像這樣定義一個可選路線部分:
routes: {
"organize(/:action)": "displayOrganize"
}
現在的URL路徑將匹配/#organize
和路線像/#organize/create
。
請記住,如果你需要一個像/#organize/
路線(以斜槓)得到認可,你可以這樣做:
routes: {
"organize(/)(:action)": "displayOrganize"
}
如何處理displayOrganize中的操作?你可以做'displayOrganize:function(action){if(action){//做些什麼...}}'? – 1nfiniti 2013-05-31 14:25:17
這應該是被接受的答案。 – 2015-02-27 13:14:46
有關使用*splat
什麼:
路線
router.routes
路由哈希將帶有參數的URL映射到路由器上的功能,類似於View的事件哈希。路線可以包含參數部分,
:param
,它們在斜槓之間匹配單個URL組件;和splat部分*splat
,它可以匹配任意數量的URL組件。例如,
"search/:query/p:page"
的路由將匹配#search/obama/p2
的片段,將"obama"
和"2"
傳遞給該動作。"file/*path"
的路線將匹配#file/nested/folder/file.txt
,將"nested/folder/file.txt"
傳遞給該操作。
您可以添加使用the route
method手動正則表達式根據路線:
路線
router.route(route, name, [callback])
手動創建路由器的路由,
route
參數可以是路由字符串或正則表達式。來自路由或正則表達式的每個匹配捕獲都將作爲參數傳遞給回調。
所以這樣的事情應該工作:
this.route(/^search\/(.*)?/, 'searchIndex');
然後searchIndex
將被調用你什麼或你的:query
作爲其參數。
缺點是你不能把正則表達式路由到你的routes
對象中。如果你想把它們放在一起,你可以在你的路由器的initialize
方法中加入route
的所有路由。
可能是剛剛宣佈超過一個航,一有多餘的ARG,一個沒有最簡單的方法:
routes:{
"authProxy/:hash": "authProxy",
"authProxy/:hash/:url": "authProxy"
}
然後只檢查他們在你的方法:
authProxy: function(hash, url){
if (url){
// Hash and URL.
}else{
// Just hash.
}
}
注我比其他兩個答案要好得多,因爲其他開發人員很容易理解發生了什麼。
加布轟的答案應該是公認的答案,而不是@mu太短。 – 2015-02-27 13:15:27
是的!技術進步! – TTT 2015-02-27 14:10:04
像「search /:query」這樣的路由不適合我。但「搜索」工作正常。任何想法? – 2015-12-16 11:31:18