Wie man eine Standard-option in Angular.js select-box
Ich habe Google gesucht und kann nichts finden.
Habe ich diesen code.
<select ng-model="somethingHere"
ng-options="option.value as option.name for option in options"
></select>
Mit einigen Daten wie diese
options = [{
name: 'Something Cool',
value: 'something-cool-value'
}, {
name: 'Something Else',
value: 'something-else-value'
}];
Und die Ausgabe ist so etwas wie dieses.
<select ng-model="somethingHere"
ng-options="option.value as option.name for option in options"
class="ng-pristine ng-valid">
<option value="?" selected="selected"></option>
<option value="0">Something Cool</option>
<option value="1">Something Else</option>
</select>
Wie ist es möglich, die erste option in den Daten als der Standardwert, so würde man ein Ergebnis erhalten, wie dieses.
<select ng-model="somethingHere" ....>
<option value="0" selected="selected">Something Cool</option>
<option value="1">Something Else</option>
</select>
Es wäre schön, wenn es eine Antwort gab, die nicht davon ausgehen, dass Winkel wurde genutzt, um die Optionen. Was ist, wenn die Optionen sind bereits Teil der markup?
nach docs.angularjs.org/api/ng/directive/ngOptions: nur
das wäre keine Antwort auf die OP, aber eine ganz andere Frage...
nach docs.angularjs.org/api/ng/directive/ngOptions: nur
a **single** hard-coded <option> element ... can be nested into the <select> element.
Die Optionen konnten nicht bereits Teil des Markups.das wäre keine Antwort auf die OP, aber eine ganz andere Frage...
InformationsquelleAutor iConnor | 2013-08-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie einfach ng-init wie diese
Nichts falsch mit dieser Antwort, aber ng-init failed für mich in meinem spezifischen Fall. Problem war, dass der Wert I war Verwendung wurde noch nicht lieferbar zu der Zeit ng-init lief: ich habe den Wert über einen ajax-Aufruf, und in diesem moment der ng-init schon fertig war. Am Ende benutzte ich einen watcher auf diesen Wert und in dieser Funktion habe ich die gleiche, wie ich im ng-init. Das hat geklappt.
Auch ich hatte Probleme bekommen, dies hat geklappt, @maurits Kommentar führte mich zu dieser stackoverflow.com/questions/22348886 viel Spaß!
Die Dokumentation der Winkel sagt, um besser mit dem controller $scope für die Initialisierung diese Art von Werten docs.angularjs.org/api/ng/directive/ngInit
Warnung: die Verwendung von ng-init für diesen Zweck kann dazu führen, übermäßige Aufrufe der $digest () - Methode, die kann dazu führen, dass die Ausgabe in der Konsole zu sehen alle rot und hässlich mit Nachrichten lik "10 $digest() Iterationen erreicht. Aborting!"
InformationsquelleAutor zs2020
Wenn Sie sicherstellen möchten, dass Ihre
$scope.somethingHere
Wert nicht überschrieben wird, wenn die view initialisiert wird, werden Sie wollen, zu verschmelzen (somethingHere = somethingHere || options[0].value
) der Wert in Ihrer ng-init, zum Beispiel so:sollte nicht die ng-init wie folgt Aussehen ng-init="somethingHere = somethingHere || Optionen[0]" ??
Der Umgang mit
options
leer? Wie im Fall desoptions
Daten kommen aus externen Quelle.Sie würden einfach brauchen, um zu überprüfen, Optionen && Optionen.Länge > 0 in Ihrem ng-init. Wirklich, die meisten sollte dies in Ihrem controller, so dass es getestet werden.
Wenn ich will, zu schreiben einen text(string), statt der ersten option.
ng-init="somethingHere= somethingHere || 'Select one' "
ich habe versucht, wie diese. aber es hat nicht funktioniert. was ist falsch in meinem codeInformationsquelleAutor Ben Lesh
Versuchen Sie dies:
HTML
Javascript
Plunker hier.
Wenn Sie wirklich wollen, um den Wert gebunden werden, um das Modell, dann ändern Sie die
ng-options
Attributund der Javascript-Code
Anderen Plunker hier in Anbetracht der oben genannten.
Ich habe es nicht erhalten. Was würden Sie tun?
Hätte ich es manuell tun, vielleicht 50+ Felder auswählen
Du meinst die Einstellung der Standard-Wert für jede select-box? Wenn ja, ich denke, das ist nicht klar in deiner Frage. Jedenfalls bin ich Recht davon ausgehen, dass Sie hätte zum laden der Elemente in jeder select-box? Wenn ja, ich glaube nicht, dass das initialisieren Ihre default-Werte würde eine große Sache sein.
Mein problem ist, dass der index der option zurück von einer "Absenden" auf dem Formular. Was ich brauche, ist, was Sie nennen option.Namen, das ist, was zurückgegeben wurde aus einer einfachen alten Schienen bilden. Die checkbox und radio-buttons funktionieren, da Sie die Verwendung von ng-repeat, um die richtige markup. Wie bekomme ich die option.name zurückgegeben form-Unterordnung-Zeit?
InformationsquelleAutor Michael Benford
Nur eine Antwort von Srivathsa Harish Venkataramana erwähnt
track by
das ist in der Tat eine Lösung dafür!!!!Hier ist ein Beispiel zusammen mit Plunker (link unten), wie
track by
im wählen Sieng-options
:Wenn
selectedCity
ist definiert durch Winkel-Bereich, und es hatid
Eigenschaft mit dem gleichen Wert wie jedeid
jedercity
auf diecities
Liste, es wird auto ausgewählt, auf laden.Siehe Quelltext-Dokumentation für weitere details:
https://code.angularjs.org/1.3.15/docs/api/ng/directive/select
Danke es hat mir geholfen 😉
Genial! Danke!
InformationsquelleAutor mik-t
Ich denke, nach der Aufnahme "track by', können Sie es im ng-Optionen zu bekommen, was Sie wollten, wie die folgenden
Diese Weise zu tun, ist es besser, weil, wenn Sie wollen, ersetzen Sie die Liste der strings mit einer Liste von Objekten, die Sie nur ändern
wo somethingHere ist ein Objekt mit den Eigenschaften name und id -, natürlich. Bitte beachten Sie, 'als' ist nicht verwendet in dieser Art und Weise auszudrücken, die ng-Optionen, denn es wird nur der Wert gesetzt und Sie werden nicht in der Lage, es zu ändern, wenn Sie mit track-by -
InformationsquelleAutor Srivathsa Harish Venkataramana
Akzeptierte Antwort
ng-init
, aber Dokument sagt, um zu vermeiden, ng-init wenn möglich.Können Sie auch
ng-repeat
stattng-options
für Ihre Optionen. Mitng-repeat
, die Sie verwenden können,ng-ausgewählt
mitng-repeat
besonderen Eigenschaften. d.h. $index, $ungerade $sogar um diese Arbeit zu machen, ohne Codierung.$first
ist eine der ng-repeat besonderen Eigenschaften.---------------------- BEARBEITEN ----------------
Obwohl dies funktioniert, ich würde lieber @mik-t ' s zu beantworten, wenn Sie wissen, welcher Wert zu wählen, https://stackoverflow.com/a/29564802/454252, die verwendet
track-by
undng-options
ohne Verwendungng-init
oderng-repeat
.Diese Antwort sollte nur verwendet werden, wenn Sie müssen wählen Sie das erste Element, ohne zu wissen, was mit dem Wert zu wählen. z.B. ich bin mit diesem für auto-Vervollständigung, die erfordert, wählen Sie das ERSTE Element die ganze Zeit.
ng-options
ist schneller und mehr optimiert, alsng-repeat
.Stimme mit Ihnen überein, aber hast du eine Quelle für diese Informationen?
Genau hier, in den docs: docs.angularjs.org/api/ng/directive/ngOptions "mehr Flexibilität in, wie die
<select>
's Modell zugeordnet ist, über dieselect as
Teil der Verständnis-Ausdruck", "reduziert den Speicherbedarf nicht die Schaffung eines neuen Bereichs für jede wiederholte Instanz", "erhöhter render-Geschwindigkeit von erstellen die Optionen in einemdocumentFragment
statt individuell"InformationsquelleAutor allenhwkim
Meine Lösung war das verwenden von html zu fest zu meinem Standard-option. Etwa so:
In HAML:
In HTML:
Ich soll meine Standard-option, um alle Werte aus meinem api, das ist, warum ich einen leeren Wert. Auch entschuldigen Sie mein haml. Ich weiß, das ist nicht direkt eine Antwort auf die OP-Frage, aber die Leute finden diese über Google. Hoffe, dies hilft jemand anderes.
Warum nicht post-html? Ich meine, war die Buchung der code wie wirklich notwendig? Es ist nicht so, die OP wurde unter Verwendung einer Template-engine in Frage.
Es ist nur haml.info ... poste ich einige html-kurz
InformationsquelleAutor penner
Folgenden code verwenden, der zum Auffüllen ausgewählten option von Ihrem Modell.
Dies funktioniert für mich auch. Einfach und verständlich.
InformationsquelleAutor Jayen Chondigara
Je nachdem, wie viele Optionen, die Sie haben, könnten Sie setzen Ihre Werte in einem array und automatisch füllen Sie Ihre Optionen wie diese
InformationsquelleAutor Alex Hawkins
In meinem Fall war ich das einfügen muss einen ursprünglichen Wert, nur um sagen zu Benutzer, um eine option auszuwählen, also, ich mag den code unten:
Als ich versuchte, die option mit dem Wert != ein leerer string (null) die option wurde ersetzt durch die eckigen, aber, wenn man eine option wie das (mit null-Wert), wählen Sie apear mit dieser option.
Sorry, durch mein schlechtes Englisch und ich hoffe, dass ich helfen etwas mit.
InformationsquelleAutor Maciel Bombonato
Dieser arbeitete für mich.
InformationsquelleAutor Bishan
In meinem Fall, da der Standard variiert von Fall zu Fall in der form.
Ich fügen Sie ein benutzerdefiniertes Attribut in der select-tag.
in den Richtlinien erstellte ich ein Skript, das überprüft, der Wert und, wenn Winkel füllt es in die Einstellung mit, dass der Wert ausgewählt.
})
übersetzt, dieses von coffescript auf die Fliegen zumindest die jist davon ist richtig, wenn nicht das ganze.
Es ist nicht der einfachste Weg, aber bekommen es getan, wenn der Wert variiert
InformationsquelleAutor Bruno
Verwenden Sie einfach
ng-selected="true"
wie folgt:InformationsquelleAutor Shevon Silva
Ich würde das Modell in der Steuerung. Dann wählen Sie die Standardeinstellung für diesen Wert. Ex:
html:
Winkel-Steuerung (Quelle):
InformationsquelleAutor Jens Alenius
Wenn Sie
ng-options
zu leisten drop-down-alsoption
mit demselben Wert wie der ng-modal ist standardmäßig ausgewählt.Betrachten Sie das Beispiel:
Also option mit demselben Wert
list.key
undselectedItem
ist standardmäßig ausgewählt.InformationsquelleAutor Rubi saini
Diese arbeiten für mich
ng-init
weil Sie die Einstellung einer ngModel.InformationsquelleAutor I don't know
Wenn Sie etwas, statt nur init dem Datum Teil, die Sie verwenden können
ng-init()
durch deklarieren es in Ihrem controller, und verwenden Sie es in der Spitze der HTML.Diese Funktion funktioniert wie ein Konstruktor für Ihren controller, und initiieren Sie Ihre Variablen gibt.
InformationsquelleAutor ofir_aghai
Brauchte ich die Standard - "Bitte Wählen", werden nicht auswählbare. Ich musste auch in der Lage sein, bedingt festlegen eine standardmäßig ausgewählte option.
Ich erreicht, das die folgende einfache Weise:
JS-code:
//Flip diese 2 zu test ausgewählten Standard oder kein Standard-mit Standard - "Bitte Wählen Sie" text
//$scope.defaultOption = 0;
$Umfang.defaultOption = { key: '3', Wert: 'Option 3' };
HTML:
Ich hoffe, dies hilft jemand anderes hat ähnliche Anforderungen.
"Bitte Wählen Sie" wurde erreicht durch Joffrey Outtier Antwort hier.
InformationsquelleAutor Spencer Sullivan
InformationsquelleAutor Mohammad Rahman
versuchen, diese in Ihrem Winkel-controller...
$somethingHere = {name: 'Etwas Kühl'};
Können Sie einen Wert festlegen, aber Sie sind mit einem komplexen Typ und die Winkelgeschwindigkeit wird die Suche-Taste/Wert zu setzen.
Und wenn nicht funktioniert, versuchen Sie dies :
ng-options=" - option.Wert als option.Namen für die option, in den Optionen track-by-option.name"
InformationsquelleAutor Wesley Rocha
Ich denke, der einfachste Weg ist
InformationsquelleAutor Cesar Alonso
Die Beste und Einfachste Weg(Aktualisiert)
hier Erklärt
https://stackoverflow.com/a/37962911/5902146
InformationsquelleAutor shreedhar bhat