Voir ngOptions
ngOptions (facultatif) - { comprehension_expression=
} - sous l'une des formes suivantes:
Pour les sources de données de tableau :
label for value in array
select as label for value in array
label group by group for value in array
select as label group by group for value in array track by trackexpr
Pour les sources de données d'objet:
label for (key , value) in object
select as label for (key , value) in object
label group by group for (key, value) in object
select as label group by group for (key, value) in object
Dans votre cas, il devrait être
array = [{ "value": 1, "text": "1st" }, { "value": 2, "text": "2nd" }];
<select ng-options="obj.value as obj.text for obj in array"></select>
Mise à jour
Avec les mises à jour sur AngularJS, il est désormais possible de définir la valeur réelle de l' value
attribut d' select
élément avec track by
expression.
<select ng-options="obj.text for obj in array track by obj.value">
</select>
Comment se souvenir de ces trucs laids
À toutes les personnes qui ont du mal à se souvenir de cette forme de syntaxe: je suis d'accord que ce n'est pas la syntaxe la plus simple ou la plus belle. Cette syntaxe est une sorte de version étendue des compréhensions de liste de Python et sachant que cela m'aide à me souvenir de la syntaxe très facilement. C'est quelque chose comme ça:
Code Python:
my_list = [x**2 for x in [1, 2, 3, 4, 5]]
> [1, 4, 9, 16, 25]
# Let people to be a list of person instances
my_list2 = [person.name for person in people]
> my_list2 = ['Alice', 'Bob']
Il s'agit en fait de la même syntaxe que la première répertoriée ci-dessus. Cependant, <select>
nous devons généralement faire la différence entre la valeur réelle du code et le texte affiché (l'étiquette) dans un <select>
élément.
Comme, nous avons besoin person.id
dans le code, mais nous ne voulons pas montrer id
à l'utilisateur; nous voulons montrer son nom. De même, nous ne sommes pas intéressés person.name
par le code. Il y a le as
mot - clé pour étiqueter les trucs. Alors ça devient comme ça:
person.id as person.name for person in people
Ou, au lieu de person.id
nous pourrions avoir besoin de l' person
instance / référence elle-même. Voir ci-dessous:
person as person.name for person in people
Pour les objets JavaScript, la même méthode s'applique également. N'oubliez pas que les éléments de l'objet sont déconstruits par (key, value)
paires.