Jestem trochę zmieszany z Angularem i ng-options
.
Mam prostą tablicę i chcę za jej pomocą zainicjować selekcję. Ale chcę, aby ta opcja wartość = etykieta.
script.js
$scope.options = ['var1', 'var2', 'var3'];
HTML
<select ng-model="myselect" ng-options="o for o in options"></select>
Co dostaję:
<option value="0">var1</option>
<option value="1">var2</option>
<option value="2">var3</option>
Czego chcę:
<option value="var1">var1</option>
<option value="var2">var2</option>
<option value="var3">var3</option>
Więc próbowałem:
<select ng-model="myselect2" ng-init=0 ng-options="options[k] as v for (k,v) in options"></select>
<select ng-model="myselect3" ng-init=0 ng-options="b as b for b in options"></select>
(Ale to nie działało.)
Edytować:
Mój formularz jest przesyłany zewnętrznie, dlatego potrzebuję „var1” jako wartości zamiast 0.
źródło
value
w swoimselect
.Możesz użyć
ng-repeat
woption
ten sposób:Po przesłaniu
form
możesz ukryć wartość danych wejściowych.DEMO
Wybrane przez ng powtórzenie
źródło
możesz użyć czegoś takiego
używając ng-selected wybrałeś opcję na wypadek, gdyby myselect było wstępnie wypełnione.
W każdym razie wolę tę metodę od ng-options, ponieważ ng-options działa tylko z tablicami. ng-repeat działa również z obiektami podobnymi do jsona.
źródło
ng-options
współpracuje również ze źródłami danych obiektowych. Zobacz docs.quarejs.org/api/ng/directive/selectJeśli skonfigurujesz swój wybór w następujący sposób:
dostaniesz:
działające skrzypce: http://jsfiddle.net/x8kCZ/15/
źródło
$ scope.option po zmianie będzie równy 'var1', nawet zobaczysz wartość = "0" w wygenerowanym HTML
plunker
źródło