2015-05-21 11 views
6

Mój Typeahead.js/Bloodhound (0.11.1) nie działa zgodnie z oczekiwaniami. Z długiej listy podanych wyników json, tylko niektóre są wyświetlane jako sugestie.Typeahead.js/Bloodhound wyświetla tylko jeden wynik

Na przykład, jeśli w moim polu zostanie wpisany los, otrzymam tylko Lostorf i nic więcej, gdy powinny być wyświetlone 4 pozycje do wyboru.

To jest mój kod:

HTML

<div id="remote"> 
<input class="typeahead" type="text"> 
</div> 

JS

var searchablePlaces = new Bloodhound({ 
    datumTokenizer  : Bloodhound.tokenizers.obj.whitespace("term"), 
    queryTokenizer  : Bloodhound.tokenizers.whitespace, 
    remote    : { 
     url    : 'http://www.example.com/autocomplete/%QUERY/', 
     wildcard  : '%QUERY', 
     filter   : function(response) { return response.data.results; } 
     }, 
    limit    : 10 
}); 

searchablePlaces.initialize(); 

$('#remote .typeahead').typeahead(
{ 
    hint   : true, 
    highlight  : true, 
    minLength  : 2 
}, 
{ 
    name   : 'searchable-places', 
    displayKey  : "term", 
    source   : searchablePlaces.ttAdapter() 
}) 

Json

{ 
    "data": { 
     "query": "los", 
     "count": 4, 
     "results": { 
      "1": { 
       "term": "Losanna" 
      }, 
      "2": { 
       "term": "Losone" 
      }, 
      "3": { 
       "term": "Lostallo" 
      }, 
      "4": { 
       "term": "Lostorf" 
      } 
     } 
    } 
} 

Czy widzisz coś nie tak? Dzięki!

+0

Przyczyna: https://github.com/twitter/typeahead.js/issues/1218 –

Odpowiedz

12

Jest to potwierdzenie, że problem jest spowodowany tym typehaead BŁĄD: https://github.com/twitter/typeahead.js/issues/1218

Jak sugeruje joekur w raporcie emisyjnej, I rozwiązać zastępując w ten sposób:

rendered += suggestions.length; 
that._append(query, suggestions.slice(0, that.limit - rendered)); 

z tym:

suggestions = suggestions.slice(0, that.limit - rendered); 
rendered += suggestions.length; 
that._append(query, suggestions); 

Oznacziłem moje własne pytanie jako duplikat tego: TypeAhead.js and Bloodhound showing an odd number of results To ten sam problem, po prostu nie mogę go znaleźć wcześniej z powodu różnych słów ng

HTH.

+2

Właściwie nie musiałem zamieniać kodu, tylko dodawać 'limit: 10' do nagłówka i moje wyniki zaczęły się wyświetlać. – kross

+0

Dziękujemy! To rozwiązało problem. To doprowadzało mnie do szaleństwa przez około 2 godziny! –

+0

To wciąż jest problem, więc kod naprawdę pomógł. miałeś zamiar oszaleć :) – Jay