猎犬和阿尔戈利亚

时间:2019-12-16 00:31:28

标签: algolia typeahead bloodhound

我有以下使用预输入代码:

var cities = function() {
  var cities = new Bloodhound({
    datumTokenizer: Bloodhound.tokenizers.obj.whitespace('display'),
    queryTokenizer: Bloodhound.tokenizers.whitespace,
    //prefetch: 'inc/api/typeahead/movies.json',
    remote: {
      url: '/search/cities/%QUERY',
      wildcard: '%QUERY'
    }
  });

  $('#city, #delivery-city, #company-city').typeahead({
    hint: true,
    highlight: true,
    minLength: 1,
  }, {
    name: 'city',
    display: 'city',
    source: cities,
    limit: 5,
    templates: {
      empty: [
        '<div class="empty-message" style="padding: 10px 15px; text-align: center;">',
        'No city found with this name.',
        '</div>'
      ].join('\n'),
      suggestion: Handlebars.compile('<div><span class="m--font-primary m--font-boldest">{{ display }}</span></div>')
    },
    matcher: function(item) {
      return true;
    }
  }).on('typeahead:selected', onSelectedCity);

  function onSelectedCity(e, data) {

    $('#county').val(data['county']);
    $('#street').val(data['street']);
    $('#postal-code').val(data['zipcode']);
  }
}

我遇到的问题是我使用Algolia来过滤结果,并且我希望Bloodhound保留从Algolia接收到的确切结构,而不以任何方式干扰或过滤结果。我也不想带出Bloodhound,因为我对通过AJAX和所有其他好东西来缓存和限制请求数量感兴趣。有没有一种方法可以利用所有其他好处,但是将结果保持与从Algolia收到的AJAX调用中得到的结果完全相同,而不会因Bloodhound干扰而对结果进行排序或过滤?

谢谢! :)

0 个答案:

没有答案