[英]Sammy.js read route with &,?
需要路線看起來像
#/routeName/?param1=aaaa¶m2=bbb
加入了薩米
#/routeName/:param1/:param2
和
#/routeName/?:param1&:param2
它們都不起作用
我一直在Sammy.js中查看查詢參數,並發現(盡管API文檔中沒有提到),Sammy確實支持查詢參數。 它只是添加它在路由中找到的任何查詢參數到路由的Sammy.EventContext.params數組。 如果您的路線結構如下:
Sammy(function() {
this.get("#/routeName/", function(context) {
alert("{'param1': '" + context.params.param1 + "', 'param2': '" + context.params.param2 + "'}");
});
});
你會發現,如果你去路由“#/ routeName /”你會得到“{'param1':undefined,'param2':undefined}”,但如果你去“#/ routeName /?param1 = aaaa&param2 = bbb“,你會得到”{'param1':'aaaa','param2':'bbb'}“。 這允許您以許多REST API開發人員熟悉的方式處理可選參數。
至於為什么你的其他兩條路線不起作用:
#/routeName/:param1/:param2
已命名,必需參數,需要至少一個非/(正斜杠)字符才能匹配路線。 至少,您必須沿着“#/ runRoute / a / b”的路線前往,以便觸發該路線的運行。 如果不提供正則表達式來代替命名參數,您將無法輕松獲得所需的效果。
#/routeName/?:param1&:param2
由於'?',尾隨/后#/ routeName /是可選的 作為Sammy路線中的特殊字符,表示前一個字符或表達式(可以使用括號定義)是可選的。 您可能使用此路由匹配'#/ routeName&b'以及#/ routeName / e&b',在兩種情況下param1都設置為'e',在兩種情況下param2都設置為'b'。 由於Sammy中的查詢參數規則,您不能輕易地定義'?' 在路由中,但您可以使用URL轉義表單'%3F'。
希望這能回答你的問題,我看到了這個問題,最近一直在研究類似的問題。 我不會聲稱自己是Sammy最知識淵博的人,但我們在目前的工作中使用它,這是我們迄今為止能夠弄清楚的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.