Je suis un peu confus avec Angular et ng-options
.
J'ai un tableau simple et je veux lancer une sélection avec. Mais, je veux que les options value = label.
script.js
$scope.options = ['var1', 'var2', 'var3'];
html
<select ng-model="myselect" ng-options="o for o in options"></select>
Ce que je reçois:
<option value="0">var1</option>
<option value="1">var2</option>
<option value="2">var3</option>
Ce que je veux:
<option value="var1">var1</option>
<option value="var2">var2</option>
<option value="var3">var3</option>
Alors j'ai essayé:
<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>
(Mais cela n'a pas fonctionné.)
Éditer:
Mon formulaire est soumis en externe, c'est pourquoi j'ai besoin de «var1» comme valeur au lieu de 0.
la source
value
dans le sienselect
.Vous pouvez utiliser
ng-repeat
avecoption
comme ceci:<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>
Lorsque vous soumettez votre,
form
vous pouvez obtenir la valeur de l'entrée masquée.DEMO
ng-sélectionné ng-répéter
la source
vous pourriez utiliser quelque chose comme
<select ng-model="myselect"> <option ng-repeat="o in options" ng-selected="{{o==myselect}}" value="{{o}}"> {{o}} </option> </select>
en utilisant ng-selected, vous présélectionnez l'option au cas où myselect serait prérempli.
Je préfère cette méthode à ng-options de toute façon, car ng-options ne fonctionne qu'avec des tableaux. ng-repeat fonctionne également avec des objets de type json.
la source
ng-options
fonctionne également avec les sources de données d'objets. Voir docs.angularjs.org/api/ng/directive/selectSi vous configurez votre sélection comme suit:
<select ng-model="myselect" ng-options="b for b in options track by b"></select>
tu auras:
<option value="var1">var1</option> <option value="var2">var2</option> <option value="var3">var3</option>
violon de travail: http://jsfiddle.net/x8kCZ/15/
la source
<select ng-model="option" ng-options="o for o in options">
$ scope.option sera égal à 'var1' après le changement, même si vous voyez value = "0" dans le html généré
plunker
la source