#/routeName/?param1=aaaa¶m2=bbb
加入了萨米
#/routeName/:param1/:param2
和
#/routeName/?:param1&:param2
它们都不起作用
解决方法
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转义表单’?’.
希望这能回答你的问题,我看到了这个问题,最近一直在研究类似的问题.我不会声称自己是Sammy最知识渊博的人,但我们在目前的工作中使用它,这是我们迄今为止能够弄清楚的.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。