Twitter Typeahead.js - Entferne das Datum bei der Auswahl

8

Ich benutze typeahead.js 0.9.3 und es funktioniert gut. Meine Frage ist, ob es möglich ist, ein Datum aus einem Dataset bei dem Ereignis "typeahead: selected" (oder irgendeinem anderen Ereignis) zu entfernen.

Ich hole die Daten im Dataset mit der Option prefetch von Typeahead beim Laden der Seite. Ich weiß, dass ich $('selector').typeahead('destroy') aufrufen und Typehead neu initialisieren und ein filter im prefetch -Objekt verwenden könnte, aber es scheint ziemlich schwer zu sein, die Daten noch einmal aufzurufen (wir speichern die Daten nicht im Cache) lokaler Speicher).

Ich denke, ich suche nach etwas, das der Funktion filter ähnlich ist, um das Array von Bezugspunkten zu durchlaufen und das zuvor ausgewählte (oder alle ausgewählte) Bezugssystem zu entfernen. Es sieht nicht so aus, als ob eine öffentliche Funktion in typeahead dazu gehört, aber vielleicht habe ich es verpasst.

Ich habe die Dokumente von typeahead durchgelesen und habe hier gesucht, aber keine Antwort gefunden.

BEARBEITEN: Ich löste das unmittelbare Problem, indem ich von prefetch auf local umschaltete und einen AJAX post Aufruf verwendete, um die Daten zu erhalten. Setze sie als globale Variable und übergab sie dann an typeahead , wo ich kann Elemente aus dem globalen Datenfeld hinzufügen / entfernen und anschließend die Schreibköpfe nach Bedarf zerstören / neu initialisieren. Weit davon entfernt, ideal zu sein, aber es funktioniert.

    
rpmartz 10.01.2014, 12:53
quelle

3 Antworten

0

Wie Sie darauf hingewiesen haben, ist dies schwierig, wenn nicht gar unmöglich, ohne massives Hacken der aktuellen Type-Ahead-Version. Es gibt 3 Dinge, die du brauchst:

  1. Remote als Funktionsoption (bei der Sie eine eigene Getterfunktion implementieren, die auf Ihre Daten zugreift, die Abfrage filtert und die bereits ausgewählten Elemente entfernt.
  2. Cache-Kontrolle : Die Fähigkeit, die Typahead-Kontrolle zu verweigern, um den Cache für die zuletzt ausgeführte Vorschlagssuche zu verwenden.
  3. On-Demand-Vorschlagssuche Aktualisieren Sie die Vorschlagsergebnisse nur dann, wenn Sie sie benötigen (wenn Sie das Eingabefeld eingeben und mit der Eingabe Ihrer Suchanfrage beginnen).

Die nächste Version von typeahead (0.10 in Entwicklung) unterstützt möglicherweise die erforderlichen Features.
Aber ... es ist so, dass meine (Svakinn) typeahead Gabel alle drei Bedingungen unterstützt, die Sie benötigen. Ihre Konfiguration sollte die Getter-Funktion liefern, wo Sie Daten aus Ihren init-Daten auswählen und nach Abfragezeichenfolge und bereits ausgewählten Optionen filtern.

%Vor%

Dann müssen Sie den Vorschlags-Cache deaktivieren:

%Vor%

Wenn Sie nicht auf die nächste Version von typeahead warten wollen, sollten Sie es ausprobieren:
Ссылка Es gibt auch live live JQuery und Knockout Beispiele zur Verfügung:
Ссылка

    
Svakinn 14.01.2014, 00:40
quelle
12

Sie können diese Funktionalität in Typeahead 0.10 für jedes Bloodhound-Dataset erzielen, unabhängig davon, ob es sich um Remote-, Prefetch- oder lokale Dateien handelt.

Verfolgen Sie einfach, welche Daten unabhängig vom Bloodhound-Dataset ausgewählt wurden, und verwenden Sie nicht Bloodhound#ttAdapater() als Ihre Quelle für Tippfehler. Die Methode ttAdapter ist einfach ein Wrapper für Bloodhound#get(query, cb) . Rufen Sie stattdessen get(query, cb) direkt mit einem benutzerdefinierten Callback auf, der jeden Vorschlag mit den aktuellen Auswahlen vergleicht.

Hier ist ein JSFiddle - Ссылка

%Vor%     
likeuntomurphy 01.07.2014 13:01
quelle
-1

Probieren Sie es aus, es ist Arbeit für mich.

%Vor%     
syarif 15.01.2014 08:22
quelle