使用algolia助手设置非Algolia url参数

时间:2016-01-06 16:26:26

标签: javascript algolia

我正在使用Algolia的Instantsearch.js,我想在我的脚本中更新非algolia相关的uri查询参数。我看到我可以使用帮助器设置查询和搜索:

search.helper.setQuery('myquery').search();

这很有用,但是我想知道我是否可以使用帮助器在查询字符串中设置一个额外的uri参数,该参数与Algolia查询无关,而是与我网站的功能相关。

我看到在文档中设置查询参数有多种功能: https://github.com/algolia/algoliasearch-helper-js#url-helpers 但它们似乎都不符合我所寻找的。您是否有关于如何更新查询字符串的建议,例如:" country_code"例如:" FR"在执行上面的search.helper.setQuery之前?我理想地喜欢它,以便两个值同时在uri中设置。谢谢!

1 个答案:

答案 0 :(得分:8)

instantsearch.js没有提供API来做到这一点,但它将保留由其他代码片段设置的每个参数。因此,在您的情况下,如果网址已经包含country_code,那么您已完成。

否则,如果您想从前端执行此操作,则可以使用浏览器的History API。此外,您可以在帮助程序上使用getStateAsQueryString,它将序列化当前状态并允许您添加更多参数(例如country_code)。但是,您需要小心使用与初始化即时搜索中的URL机制相同的参数(例如,哪些属性用于URL)。如果你使用默认值,你应该是好的。

为了替换当前的URL /历史状态,代码如下所示:

window.history.replaceState(
  null,
  'Title',
  '?' + helper.getStateAsQueryString({
    moreAttributes: {
      country_code: 'fr'
    }
  }));

要更改参数的当前值,它将类似于:

window.history.pushState(
  null,
  'Title',
  '?' + helper.getStateAsQueryString({
    moreAttributes: {
      country_code: 'de'
    }
  }));