Ich verwende den eckigen UI-Bootstrap-Typeahead und möchte ihn verwenden, um viele Auswahlmöglichkeiten zu finden. Daher muss ich den ausgewählten Wert abrufen, wenn die selectMatch-Methode gestartet wird, aber ich kann nicht finden, wie das geht das in meinem Controller
<div class='container-fluid' ng-controller="TypeaheadCtrl">
<pre>Model: {{selected| json}}</pre>
<input type="text" ng-model="selected" typeahead="state for state in states | filter:$viewValue">
Wenn ich den ausgewählten Wert beobachte, erhalte ich die Änderung jedes Mal, wenn eine Taste gedrückt wird ...
scope.$watch('selected', function(newValue, oldValue) {... });
Ich habe festgestellt, dass die Methode selectMatch aufgerufen wird, wenn der Benutzer die Eingabetaste drückt oder auf die Liste klickt, aber ich weiß nicht, wie ich einen Rückruf dazu erhalten soll ...
Vielen Dank !
quelle
state.id as state.name for state in states
. In diesem Fall$item
iststate
, ist $ Modellstate.id
, und$label
iststate.name
Bearbeiten: Diese Methode ist derzeit nicht die beste. Es ist besser, den onSelect-Rückruf zu verwenden, wie in der obigen Antwort erläutert.
Ich fand heraus, wie man macht, was ich wollte. Ich habe gesehen, dass es ein typeahead-editierbares Attribut gibt. Wenn es auf false gesetzt ist, ändert sich der ausgewählte Wert nur, wenn ein Wert aus dem Modell ausgewählt wird. Die $ watch funktioniert also einwandfrei, um zu überprüfen, wann ein neuer Wert ausgewählt wird.
quelle
Folgendes sollte Ihr HTML sein
Fügen Sie einfach typeahead-on-select im Eingabe-Tag mit der Rückruffunktion hinzu.
Das Folgende würde in den Controller gehen
Innerhalb von $ item erhalten Sie das gesamte Objekt, das Sie im Hauptarray der Vorschlagsliste übergeben haben
quelle
Versuchen Sie vor der Validierung Folgendes
quelle