只是想知道是否有在 sammy js 路由中将参数指定为可选的。
我见过你可以用的地方
route/:foo/?:bar
这会让 sammy 认为 bar 是可选的。但是,如果您在没有提供 bar
的情况下查询参数,它将等于 url 的最后一个字符,例如
'#/route/test' => {foo: 'test', bar: 't'}
和
'/route/test/chicken' => {foo: 'test', bar: 'chicken' }
但是在这两种情况下都填充了 bar,因此无法检查它是否已提供。
有什么建议吗?
最佳答案
Sammy 在谈到可选参数和查询字符串时实际上失误了。我能让它很好地工作的唯一方法是使用正则表达式和 splat 对象。在你的例子中,你会写:
this.get(/\#\/route\/(.*)\/(.*)/, function (context) {
var result = this.params['splat'];
});
缺点是当省略可选参数时,您需要在 URL 末尾使用反斜杠。
splat 对象是 JavaScript 匹配方法的实际结果,是一个数组。
'#/route/test/' => {result[0]: 'test', result[1]: ''}
'#/route/test/chicken' => {result[0]: 'test', result[1]: 'chicken'}
关于javascript - sammyjs 可选参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15876112/