具有多个远程数据源的typeahead / bloodhound

时间:2015-01-04 15:25:26

标签: javascript typeahead.js

我想使用twitter的typeahead来实现搜索自动提示。此autosuggest应提供术语建议(条款)和产品建议(产品)。这两个建议都可以远程检索。但是,似乎typeahead方法只调用一个远程URL。第二个从未被调用过。

有谁知道我做错了什么?这是我的代码:

$(document).ready(function () {
  var termEngine = new Bloodhound({
    name: 'searchTerms',
    remote: "/index.php?terms=true&g=%QUERY",
    datumTokenizer: Bloodhound.tokenizers.whitespace,
    queryTokenizer: Bloodhound.tokenizers.whitespace,
    cache: false
  });
  var productEngine = new Bloodhound({
    name: 'products',
    remote: "/index.php?products=true&g=%QUERY",
    datumTokenizer: Bloodhound.tokenizers.whitespace,
    queryTokenizer: Bloodhound.tokenizers.whitespace,
    cache: false
  });

  termEngine.initialize();
  productEngine.initialize();

  $('#searchField').typeahead(
      {
        name: 'searchTerms',
        source: termEngine.ttAdapter()
      }, {
        name: 'products',
        source: productEngine.ttAdapter()
  });
}

我还添加了一个带有相同问题的jsfiddle链接(尽管是一个不同的远程数据源):http://jsfiddle.net/r4cnares/1/

1 个答案:

答案 0 :(得分:0)

问题解决了:我必须在typeahead方法中添加一个空选项对象:

$('#searchField').typeahead({},
  {
    name: 'searchTerms',
    source: termEngine.ttAdapter()
  }, {
    name: 'products',
    source: productEngine.ttAdapter()
});

这可以确保两个请求都被执行。