Przeszukałem Google i nie mogę znaleźć niczego na ten temat.
Mam ten kod.
<select ng-model="somethingHere"
ng-options="option.value as option.name for option in options"
></select>
Z takimi danymi
options = [{
name: 'Something Cool',
value: 'something-cool-value'
}, {
name: 'Something Else',
value: 'something-else-value'
}];
A wynik jest mniej więcej taki.
<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>
Jak można ustawić pierwszą opcję w danych jako wartość domyślną, aby uzyskać taki wynik?
<select ng-model="somethingHere" ....>
<option value="0" selected="selected">Something Cool</option>
<option value="1">Something Else</option>
</select>
javascript
angularjs
html-select
iConnor
źródło
źródło
a **single** hard-coded <option> element ... can be nested into the <select> element.
Opcje nie mogą już być częścią znaczników.Odpowiedzi:
Możesz po prostu użyć ng-init w ten sposób
źródło
Jeśli chcesz mieć pewność, że twoja
$scope.somethingHere
wartość nie zostanie nadpisana podczas inicjalizacji widoku, będziesz chciał połączyć (somethingHere = somethingHere || options[0].value
) wartość w swojej ng-init w następujący sposób:źródło
options
byciem pustym? Podobnie jak w przypadkuoptions
danych pochodzących ze źródła zewnętrznego.ng-init="somethingHere= somethingHere || 'Select one' "
próbowałem w ten sposób. ale to nie zadziałało. co jest nie tak w moim kodzieSpróbuj tego:
HTML
JavaScript
Plunker tutaj .
Jeśli naprawdę chcesz ustawić wartość, która zostanie powiązana z modelem, zmień
ng-options
atrybut nai JavaScript do
Innym Plunker tutaj w związku z powyższym.
źródło
Wspomniana tylko jedna odpowiedź Srivathsa Harish Venkataramana,
track by
która jest rzeczywiście rozwiązaniem tego problemu!Oto przykład wraz z Plunkerem (link poniżej), jak używać
track by
w selectng-options
:Jeśli
selectedCity
jest zdefiniowany w zakresie kątowym i maid
właściwość o takiej samej wartości jakid
dowolnacity
nacities
liście, zostanie on automatycznie wybrany przy ładowaniu.Więcej informacji można znaleźć w dokumentacji źródłowej: https://code.angularjs.org/1.3.15/docs/api/ng/directive/select
źródło
Myślę, że po włączeniu funkcji „śledź przez” możesz użyć jej w opcjach ng, aby uzyskać to, czego chciałeś, na przykład:
Ten sposób na zrobienie tego jest lepszy, ponieważ jeśli chcesz zamienić listę ciągów na listę obiektów, po prostu to zmienisz
gdzie somethingHere to oczywiście obiekt o nazwie i id właściwości. Pamiętaj, że „as” nie jest używane w ten sposób do wyrażenia opcji ng, ponieważ spowoduje to jedynie ustawienie wartości i nie będzie można jej zmienić, jeśli korzystasz z funkcji śledzenia przez
źródło
Zastosowano zaakceptowaną odpowiedź
ng-init
, ale dokument mówi, aby unikać ng-init, jeśli to możliwe.Możesz także użyć
ng-repeat
zamiastng-options
opcji. Dzięking-repeat
możesz używaćng-selected
zng-repeat
specjalnych właściwościach. tj. $ index, $ nieparzyste, $ nawet, aby to działało bez żadnego kodowania.$first
jest jedną z właściwości specjalnych powtórzeń ng.---------------------- EDYCJA ----------------
Chociaż to działa, wolałbym @ mik-t odpowiedz, gdy wiesz, jaką wartość wybrać, https://stackoverflow.com/a/29564802/454252 , który używa
track-by
ing-options
nie używang-init
lubng-repeat
.Tej odpowiedzi należy używać tylko wtedy, gdy musisz wybrać pierwszy element, nie wiedząc, jaką wartość wybrać. np. używam tego do automatycznego uzupełniania, które wymaga ciągłego wybierania PIERWSZEGO elementu.
źródło
ng-options
jest szybszy i bardziej zoptymalizowany niżng-repeat
.<select>
przypisywania modelu za pomocąselect as
wyrażenia rozumienia”, „zmniejszone zużycie pamięci przez brak tworzenia nowego zakresu dla każde powtarzające się wystąpienie ”,„ zwiększono szybkość renderowania, tworząc opcjedocumentFragment
zamiast zamiast pojedynczo ”Moim rozwiązaniem było użycie kodu HTML, aby zakodować moją domyślną opcję. Tak jak:
W HAML:
W HTML:
Chcę, aby moja domyślna opcja zwracała wszystkie wartości z mojego interfejsu API, dlatego mam pustą wartość. Przepraszam też za haml. Wiem, że nie jest to bezpośrednia odpowiedź na pytanie PO, ale ludzie znajdują to w Google. Mam nadzieję, że to pomaga komuś innemu.
źródło
Użyj poniższego kodu, aby wypełnić wybraną opcję ze swojego modelu.
źródło
W zależności od liczby dostępnych opcji możesz umieścić swoje wartości w tablicy i automatycznie wypełnić te opcje w ten sposób
źródło
W moim przypadku musiałem wstawić wartość początkową tylko po to, aby powiedzieć użytkownikowi, aby wybrał opcję, więc podoba mi się poniższy kod:
Kiedy wypróbowałem opcję o wartości! = Pustego łańcucha (null), opcja została zastąpiona przez kąt, ale po umieszczeniu takiej opcji (z wartością null) wybierz pojawia się z tą opcją.
Przepraszam za mój zły angielski i mam nadzieję, że w czymś pomogę.
źródło
Korzystanie
select
zngOptions
i ustawianie wartości domyślnej:Zobacz ngOptions dokumentacją więcej
ngOptions
przykładów wykorzystania.plnkr.co
Oficjalna dokumentacja o
SELECT
elemencieHTMLz kątowym wiązaniem danych.Powiązanie
select
z wartościąngModel
nieciągową przez parsowanie / formatowanie:plnkr.co
Inny przykład:
jsfiddle
źródło
To zadziałało dla mnie.
źródło
W moim przypadku domyślna wartość różni się w zależności od przypadku w formularzu. Dodaję niestandardowy atrybut w tagu select.
w dyrektywach stworzyłem skrypt, który sprawdza wartość i kiedy wypełnia ją kątowo ustawia opcję z tą wartością na wybraną.
})
właśnie przetłumaczyłem to z coffescript w locie, przynajmniej pierwszy z nich jest poprawny, jeśli nie dziura.
To nie jest najprostszy sposób, ale zrób to, gdy wartość się zmienia
źródło
W odpowiedzi na odpowiedź Bena Lesha powinna istnieć ta linia
zamiast
To jest,
źródło
Po prostu użyj
ng-selected="true"
w następujący sposób:źródło
Ustawiłbym model w kontrolerze. Następnie wybierz domyślnie tę wartość. Przykład: html:
Kontroler kątowy (za pomocą zasobu):
źródło
To działa dla mnie
źródło
ng-init
ponieważ ustawiasz ngModel.Jeśli używasz
ng-options
do renderowania, rozwijanaoption
jest opcja domyślna, która ma taką samą wartość jak ng-modal. Rozważ przykład:Tak więc opcja o tej samej wartości
list.key
iselectedItem
jest domyślnie wybrana.źródło
Potrzebowałem domyślnego „Please Select”, aby nie można go było wybrać. Musiałem także móc warunkowo ustawić domyślną wybraną opcję.
Osiągnąłem to w następujący uproszczony sposób: kod JS: // Odwróć te 2, aby przetestować wybraną wartość domyślną lub brak wartości domyślnej z domyślnym tekstem „Proszę wybrać” //$scope.defaultOption = 0; $ scope.defaultOption = {klucz: „3”, wartość: „opcja 3”};
HTML:
Mam nadzieję, że pomoże to komuś, kto ma podobne wymagania.
„Proszę wybrać” zostało osiągnięte dzięki odpowiedzi Joffreya Outtiera tutaj .
źródło
Jeśli masz coś zamiast zainicjować część z datą, możesz użyć
ng-init()
, zadeklarując to w kontrolerze i użyj go w górnej części kodu HTML. Ta funkcja będzie działać jak konstruktor kontrolera i możesz tam zainicjować zmienne.źródło
źródło
spróbuj tego w kontrolerze kątowym ...
$ somethingHere = {name: 'Something Cool'};
Możesz ustawić wartość, ale używasz typu złożonego, a kątownik przeszuka klucz / wartość, aby ustawić w twoim widoku.
A jeśli nie działa, spróbuj tego: ng-options = "opcja.value as option.name dla opcji w opcjach śledź według opcji.name"
źródło
Myślę, że najłatwiej jest
źródło