typeahead结果不会始终以相同的数量返回

时间:2016-08-30 16:37:41

标签: javascript jquery typeahead.js

我试图调试为什么我的推特预订结果不一致,而且我不能,为了我的生活,弄清楚出了什么问题。即使我向查询提供数据的页面每次返回50个结果,有时在我的下拉列表中,typeahead会给我2个,或15个,或者全部50个,而且我不知道是什么导致了这种差异。

/* Bloodhound  */
partsList = new Bloodhound({
    datumTokenizer: function (datum) {
        return Bloodhound.tokenizers.whitespace(datum.value);
    },
    queryTokenizer: Bloodhound.tokenizers.whitespace,
    remote: {                                                                                                                                         
      url: 'search.php?p=%QUERY',                
      wildcard: '%QUERY',
      minLength: 1,
      filter: function (partsList) {        
        return $.map(partsList, function (itemNumber) {
          console.log(itemNumber.one);                           
          return {
            itemOneHeader   : itemNumber.header_one,
            itemTwoHeader   : itemNumber.header_two,                 
            itemOne         : itemNumber.one,
            itemTwo         : itemNumber.two,                                           
          };                                
        });
      }
    },
    limit: 49
});


/* Main search box typeahead */
$('.mainSearchBox').typeahead(
{   hint: false,
    name: 'mainSearchBox',
    highlight: true,
    minLength: 1
},
{
    displayKey: 'itemOne',    
    templates: {       
        suggestion: Handlebars.compile( settings == "a" ? "<strong>{{itemOne}}</strong>" : "<div><strong>{{itemOne}}</strong> <div class='suggestion'>{{itemTwo}}</div></div>" )
    },    
    source: partsList.ttAdapter(),
    limit: 49
})
.on('typeahead:selected', function (obj, datum) {    
      iOne           = datum.itemOne;
      iTwo           = datum.itemTwo;
      iOne_header    = datum.itemOneHeader;                  
      iTwo_header    = datum.itemTwoHeader;      
      headerOne      = iOne_header;
      headerTwo      = iTwo_header;               

})
.on('typeahead:asyncrequest', function() {
    $('#loadingCogs').html('<i class="fa fa-circle-o-notch fa-3x fa-spin"></i>');
})
.on('typeahead:asynccancel typeahead:asyncreceive', function() {
    $('#loadingCogs').html('');
});

如果我查看console.log(itemNumber.one)行,请输入打印到我的控制台的内容:

BAS
BAS01
BAS0234
BAS2349
BAS29939
BAS52
BAS11
BAS69
BAS67
BAS24
84BAS92
92BAS
BAS9
9600BAS
BAS22,74
86BAS
87BAS
88BAS
89BAS
90BAS

但在预先输入的窗口中,我看到的只有:

BAS
BAS01

然而,这完全不一致 - 如果我进行另一次搜索,BA - 我得到大约50个结果,而typeahead显示所有50.搜索ASDF给我32个结果,全部32个我看 - 似乎只是某些搜索词导致我只能得到一些结果。

我不确定是否有正在返回的数据会导致输出数据在点击该数据时停止运行,错误输出,并且只返回2或3个结果,但它肯定是不只是文字搜索词BA给了我回复&#34;坏&#34;结果 - 我找不到任何模式来说明为什么它会返回良好结果和不良结果......

在完整的搜索词BAS04052中,我得到以下数据:

Term    console.log    typeahead
B           50            50
BA          50             3
BAS         48            48
BAS0        46            46
BAS04       41            41
BAS040      32            18
BAS0405     16            16
BAS04052    15            15

0 个答案:

没有答案