Twitter Bootstrap-Typ-Vorauswahl nicht an KnockoutJS gebunden

8

Ok, ich habe mich seit Stunden mit diesem Problem herumgeschlagen und das Problem auf eine sehr einfache Fiddle

beschränkt >

Problem ist, dass wenn ich das typeahead Plugin von twitter bootstrap für eine Texteingabe verwende und eine Auswahl mache, der Wert im KnockoutJS ViewModel nicht aktualisiert wird. Ich weiß, ich könnte es hacken, um zu arbeiten, aber da muss etwas sein, das ich hier vermisse.

Grundsätzlich habe ich:

Knockout-Bindung

%Vor%

Knockout ViewModel

%Vor%

HTML

%Vor%

Der Rest des Zeugs kommt einfach von Twitter Bootstrap.

    
Jani Hyytiäinen 10.07.2013, 08:05
quelle

3 Antworten

4

Eine Lösung besteht darin, Ihre updater -Funktion zu ändern, wo Sie das in der value -Bindung verwendete Observable abrufen und mit dem Funktionsparameter aktualisieren müssen:

%Vor%

Demo JSFiddle.

Wenn Sie nicht der Autor der Bindung sind, können Sie mit der Option updater die Funktion updater

angeben %Vor%

Da updater das ausgewählte Element zurückgeben soll, ist die Syntax nicht so schön.

Demo JSFiddle.

    
nemesv 10.07.2013, 08:38
quelle
3

Dieses Updater-Zeug funktionierte nicht für mich, hier ist was

%Vor%     
user2576666 14.10.2013 17:44
quelle
3

Ich bevorzuge es, meine Liste der automatischen Vervollständigungen getrennt von Knockout zu halten. Ich will nur, dass Knockout weiß, wann ein Benutzer tatsächlich einen Wert eingegeben hat.

Dies ist näher an der Methode von user2576666, da Typeaheads benutzerdefinierte Ereignisse verwendet werden , um eine Aktualisierung im Knockout-Modell zu erzwingen, wenn eine Auswahl oder eine automatische Vervollständigung vorliegt. Es erfordert jedoch keine typeahead benutzerdefinierte Bindung, und die Werte müssen nicht in dem Knockout ViewModel gespeichert werden. Dies eröffnet den Spielraum für eine individuell anpassbare Fertigstellung auf der ganzen Linie (z. B. mit Bloodhound ), die unnötig fummelig werden würden, wenn wir versuchen würden, sie im Knockout-Modell zu speichern. Mein ViewModel ist definitiv nicht der richtige Ort, um die Autokomplettierungsoptionen für meinen Anwendungsfall zu speichern (und, ich würde vorschlagen, viele andere - besonders wenn Sie eine potentiell große Liste haben, die eine dynamische Population benötigt). IMO diese Version ist auch einfacher zu verstehen:

%Vor%

Ich habe das natürlich als JSFiddle gespeichert:

    
Andy MacKinlay 28.07.2014 05:36
quelle