AngularJS - Wertattribut für select
Source-JSON-Daten:
[
{"name":"Alabama","code":"AL"},
{"name":"Alaska","code":"AK"},
{"name":"American Samoa","code":"AS"},
...
]
Ich versuche
ng-options="i.code as i.name for i in regions"
aber bin immer:
<option value="?" selected="selected"></option>
<option value="0">Alabama</option>
<option value="1">Alaska</option>
<option value="2">American Samoa</option>
während ich mich in der Erwartung zu erhalten:
<option value="AL">Alabama</option>
<option value="AK">Alaska</option>
<option value="AS">American Samoa</option>
So, wie man value-Attribute und loswerden "?" posten?
Übrigens, wenn ich die $scope.Regionen zu einer statischen JSON anstelle von AJAX-Anfrage das Ergebnis, das Leergut verschwindet.
InformationsquelleAutor der Frage Paul | 2012-12-10
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Was Sie zunächst versucht, sollte funktionieren, aber das HTML ist nicht das, was wir erwarten würden. Ich wurde eine option Hinzugefügt, Griff die Initialen "kein Element ausgewählt" case:
Den oben generiert diesen HTML:
Fiddle
Obwohl Angular verwendet numerische Ganzzahlen für den Wert, das Modell (d.h., $Umfang.region), AL, AK, oder, ALS, wie gewünscht. (Der numerische Wert verwendet wird, die durch Eckige nachschlagen des richtigen array-Eintrag, wenn eine option aus der Liste ausgewählt wird.)
Dies kann verwirrend sein, wenn zunächst lernen, wie man Eckige implementiert die "select" - Anweisung.
InformationsquelleAutor der Antwort Mark Rajcok
Kann man nicht wirklich, dies zu tun, es sei denn, Sie bauen Sie sich selbst in einer ng-repeat.
ABER... es ist wahrscheinlich nicht Wert. Es ist besser, lassen Sie es wie vorgesehen funktioniert und lassen Sie Eckige Griff das Innenleben. Angular verwendet den index auf diese Weise, so kann man eigentlich ein ganzes Objekt als Wert. So können Sie eine drop-down-Bindung zu wählen, eine ganze statt nur einer saite, die ist ziemlich genial:
InformationsquelleAutor der Antwort Ben Lesh
Wenn Sie die
track by
option, dievalue
Attribut ist korrekt geschrieben, z.B.:produziert:
InformationsquelleAutor der Antwort Joscha
Wenn das Modell angegeben, um das Dropdown nicht existiert, dann eckig, erzeugen eine leere Optionen element. So müssen Sie explizit angeben, das Modell auf der wählen Sie wie folgt aus:
Beziehen sich auf die folgenden, da es bereits beantwortet wurde, bevor:
Warum AngularJS enthalten eine leere option wählen Sie? und diese fiddle
Update: Versuchen Sie dies:
Beachten Sie, dass es keinen leeren Optionen element in der select.
InformationsquelleAutor der Antwort msyed
Könnte man ändern Sie das Modell wie folgt Aussehen:
Dann verwenden
InformationsquelleAutor der Antwort Olivier.Roger
Scheint es nicht möglich, die tatsächlich mit dem "Wert" einer wählen Sie in irgendeiner sinnvollen Weise wie eine normale HTML-form-element und auch Haken es bis zu Winkel in der genehmigten Art und Weise mit ng-Optionen. Als Kompromiss, ich endete, dass Sie einen versteckten Eingang neben dem auswählen und es haben verfolgen das gleiche Modell wie meine wählen Sie, wie hier (alles sehr vereinfacht von real production code für die Kürze):
HTML:
Javascript:
Dann, in meinem server-side code, den ich nur nach Begriffen
params[:profile_id]
(dies geschah, um eine Rails-app, aber das gleiche Prinzip gilt überall). Weil die hidden-input-tracks das gleiche Modell wie das wählen, bleiben Sie in Synchronisierung automatisch (kein zusätzliches javascript erforderlich). Das ist die Coole Teil Eckig. Fast macht für das, was es tut, um das value-Attribut als Nebenwirkung.Interessant fand ich diese Technik funktioniert nur mit input-tags wurden nicht ausgeblendet (das ist, warum ich habe das margin-left:-10000px; trick, bewegen Sie den Eingang von der Seite). Diese beiden Varianten haben nicht funktioniert:
und
Ich fühle mich wie, dass muss bedeuten, ich bin etwas fehlt. Es scheint auch seltsam, denn es ist ein problem mit den Eckigen.
InformationsquelleAutor der Antwort Tim Cull
können Sie
Denen Staaten in die JSON-array, der Staat ist der name der variable für jedes Objekt im array.
Hoffe, das hilft
InformationsquelleAutor der Antwort lazell
Versuchen Sie es wie folgt:
InformationsquelleAutor der Antwort blackHu