javascript - sammyjs 可选参数

标签 javascript sammy.js

只是想知道是否有在 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/

相关文章:

javascript - 切换对象的原型(prototype)

javascript - 遍历帖子的日期以便在 DocPad 中进行存档

带有符号 '\' 的 Javascript 字符串

javascript - 正则表达式匹配其边界

durandal - 忽略 DurandalJS 应用程序中的 anchor

jquery - 按下后退按钮时 Sammy.js 表单被清除

javascript - knockout JS : Delete multiple items using checkbox and one delete button

javascript - 以 Angular 加载测试图像源时出错

asp.net-mvc - Sammy.js 和 Knockout.js => 没有模板的模板?

javascript - 根路径上的 Sammy.js 404