ng-options avec un tableau simple init

Je suis un peu confus avec les ng-options angulars et ng-options .

J’ai un tableau simple et je veux initier une sélection avec elle. Mais je veux que les options value = label.

script.js

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

html

  

Ce que je reçois:

 var1 var2 var3 

Ce que je veux:

 var1 var2 var3 

J’ai donc essayé:

   

(Mais ça n’a pas marché.)

Modifier:

Mon formulaire est soumis en externe, c’est pourquoi j’ai besoin de ‘var1’ comme valeur au lieu de 0.

Vous l’avez effectivement eu dans votre troisième tentative.

   

Voir un exemple de travail ici: http://plnkr.co/edit/xEERH2zDQ5mPXt9qCl6k?p=preview

L’astuce est qu’AngularJS écrit les clés sous forme de nombres de 0 à n quand même, et les renvoie lors de la mise à jour du modèle.

Par conséquent, le code HTML sera incorrect, mais le modèle sera toujours défini correctement lors du choix d’une valeur. (c.-à-d. AngularJS traduira “0” en “var1”)

La solution d’Epokk fonctionne également, mais si vous chargez des données de manière asynchrone, vous constaterez peut-être que celle-ci n’est pas toujours correctement mise à jour. L’utilisation de ngOptions sera correctement actualisée lorsque la scope change.

Vous pouvez utiliser ng-repeat avec l’ option comme ceci:

 

Lorsque vous soumettez votre form vous pouvez obtenir la valeur de l’entrée masquée.


DEMO

ng-selected ng-repeat

Si vous configurez votre sélection comme suit:

  

tu auras:

    

violon de travail: http://jsfiddle.net/x8kCZ/15/

vous pourriez utiliser quelque chose comme

  

En utilisant ng-selected, vous présélectionnez l’option si myselect était pré-rempli.

Je préfère cette méthode aux options ng, car ng-options ne fonctionne qu’avec les tableaux. ng-repeat fonctionne également avec des objects de type json.

  

$ scope.option sera égal à ‘var1’ après le changement, même si vous voyez value = “0” dans le HTML généré

plongeur