2015-12-29 29 views
5

Używam Typeahead.js z implementacji, która wygląda bardzo podobnie do „wielu zbiorów danych” znalezione w examples:Pokazuje łączne wyniki zliczania użyciu Typeahead.js za prefetch

var nbaTeams = new Bloodhound({ 
     datumTokenizer: Bloodhound.tokenizers.obj.whitespace('team'), 
     queryTokenizer: Bloodhound.tokenizers.whitespace, 
     prefetch: '../data/nba.json' 
}); 

var nhlTeams = new Bloodhound({ 
     datumTokenizer: Bloodhound.tokenizers.obj.whitespace('team'), 
     queryTokenizer: Bloodhound.tokenizers.whitespace, 
     prefetch: '../data/nhl.json' 
}); 

var footer = function (context) { 
    // calculate total hits here 
    return "<a href='...'>" + count + "</a>"; 
} 

$('#multiple-datasets .typeahead').typeahead(null, {  
     name: 'nba-teams', 
     display: 'team', 
     source: nbaTeams, 
     templates: { 
      header: '<h3 class="league-name">NBA Teams</h3>' 
     }, 
     limit: 3 
    }, 
    { 
     name: 'nhl-teams', 
     display: 'team', 
     source: nhlTeams, 
     templates: { 
      header: '<h3 class="league-name">NHL Teams</h3>', 
      footer: footer 
     }, 
     limit: 3 
}); 

Używam najnowszych wersja Typeahead.js (wersja0.11.1). Próbuję dodać szablon stopki na dole sekcji zespołów NHL, który ma łączną liczbę pasujących wyników. Coś w rodzaju <a href="...">Browse all ### results</a>. Nie mogę znaleźć nigdzie w dokumentacji, gdzie mogę pobrać liczbę całkowitych trafień z Bloodhound.

Widziałem ludzi robiących to ze zdalnymi źródłami danych, ale moje źródło danych jest na tyle małe, że można je pobrać i zapisać w pamięci podręcznej, więc chciałbym użyć wstępnego pobierania.

Odpowiedz

2

Myślę, że twój drugi kod jest całkowicie w porządku, wystarczy zaktualizować funkcję footer, wykonując następujące czynności.

var footer = function (context) { 
    // calculate total hits here 
    return "<a href='#'>browse all <b>" + context.suggestions.length + "</b> results</a>"; 
} 

Spójrz na this skrzypcach.

+0

Kiedy wpisuję "a", oznacza to "zobacz wszystkie 1 wyniki", ale na ekranie są wyświetlane 3. Dodatkowo istnieje prawdopodobnie ~ 20 wyników, które mają w sobie ... Chcę 20. –

+0

Dla pierwszego zapytania, mówi "zobacz wszystkie 1 wyniki", ponieważ szablon stopki jest dla drugiego zestawu danych, a pozostałe dwa wyniki są od pierwszego zestawu danych. Dla twojego drugiego zapytania, To był [błąd] (https://github.com/twitter/typeahead.js/issues/96), plugin mathches tylko zaczynając od tokes. Jeśli chcesz dopasować dowolną postać, możesz znaleźć rozwiązanie [tutaj] (http://stackoverflow.com/questions/22059933/twitter-typeahead-js-how-to-return-all-matched-elements-within-a String) –

+0

Chcę dopasować dowolny znak w obu zestawach danych, nie tylko ten, do którego dołączona jest stopka. –