我正在使用sammy.js,我已经知道如何将该网址“切割”成多个部分:
<a href="#/label/drafts">drafts</a>
通过

  this.get('#/label/:name', function(context) {

              context.$element().append('<h1>' + this.params['name'] + '</h1>');
          });

但是,如何剪切此复合URL?
<a href="#/label/drafts?a=1&b=2&c=love#a">How to solve this ? </a>

题 :

如何提取(萨米的方法):
  • a的值(预期1)
  • b的值(预期2)
  • c的值(不带哈希)(预期的love)
  • c的哈希(预期的a)

  • jsbin

    n.b.我正在寻找sammy'js的方式(我显然可以通过纯JavaScript来剪切它,但再次,我想要sammy'js的方式-如果可能的话)

    最佳答案

    实际上,Sammy.js确实支持查询参数,因此您可以在URL中使用当前的大部分示例(有关示例,请参见my answer here)。出于不必要,它不支持URL中的#。它将查询字符串定义为?,后跟任意数量的非哈希字符(包括无)。这是由于这样的事实,像/index?param=foo#bar这样的URL是一个有效的URL,它按照HTTP标准被拆分为:

  • 路由为'/ index'
  • 查询参数'param'设置为'foo'
  • location.hash设置为“bar”

  • 如果Sammy在一组有效的查询参数字符中包括一个哈希字符,那么它将无法轻松识别有效URL上的哈希。但是,如果要对哈希进行URL编码,则可以在路由中使用它。

    因此,总而言之,Sammy可以使您接近所需的内容,但是由于它如何定义查询参数,因此无法一路走到那里。

    关于javascript - 分析sammy.js中的查询字符串?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22808748/

    10-10 14:18