w3schools - value option angularjs




ng-options com simples array init (4)

Estou um pouco confuso com ng-options Angular e ng-options .

Eu tenho um array simples e quero iniciar um select com ele. Mas eu quero que as opções value = label.

script.js

$scope.options = ['var1', 'var2', 'var3'];

html

<select ng-model="myselect" ng-options="o for o in options"></select>

O que eu ganho:

<option value="0">var1</option>
<option value="1">var2</option>
<option value="2">var3</option>

O que eu quero:

<option value="var1">var1</option>
<option value="var2">var2</option>
<option value="var3">var3</option>

Então eu tentei:

<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>

(Mas não funcionou.)

Editar:

Meu formulário é enviado externamente, e é por isso que preciso de 'var1' como o valor em vez de 0.


Se você configurar o seu select como o seguinte:

<select ng-model="myselect" ng-options="b for b in options track by b"></select>

você vai ter:

<option value="var1">var1</option>
<option value="var2">var2</option>
<option value="var3">var3</option>

violino de trabalho: http://jsfiddle.net/x8kCZ/15/


Você pode usar ng-repeat com option como esta:

<form>
    <select ng-model="yourSelect" 
        ng-options="option as option for option in ['var1', 'var2', 'var3']"
        ng-init="yourSelect='var1'"></select>
    <input type="hidden" name="yourSelect" value="{{yourSelect}}" />
</form>

Quando você envia seu form você pode obter o valor da entrada oculta.

DEMO

ng -repeat ng-repeat


você poderia usar algo como

<select ng-model="myselect">
    <option ng-repeat="o in options" ng-selected="{{o==myselect}}" value="{{o}}">
        {{o}}
    </option>
</select>

usando ng-selecionado, você pré-seleciona a opção caso o myselect tenha sido pré-preenchido.

Eu prefiro esse método sobre ng-options de qualquer maneira, como ng-options só funciona com arrays. ng-repeat também funciona com objetos semelhantes a json.


<select ng-model="option" ng-options="o for o in options">

$ scope.option será igual a 'var1' após a mudança, mesmo você verá valor = "0" no html gerado

plunker







ng-options