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.
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:
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.
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:
Ссылка
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%Tags und Links javascript typeahead.js twitter-typeahead