ngOptionsを参照してください
ngOptions(オプション) – { comprehension_expression=
} – 次のいずれかの形式:
配列データ ソースの場合:
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
オブジェクト データ ソースの場合:
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
あなたの場合、それは
array = [{ "value": 1, "text": "1st" }, { "value": 2, "text": "2nd" }];
<select ng-options="obj.value as obj.text for obj in array"></select>
アップデート
AngularJS の更新により、要素のvalue
属性の実際の値を式で設定できるようになりました。select
track by
<select ng-options="obj.text for obj in array track by obj.value">
</select>
この醜いものを覚える方法
この構文形式を覚えるのに苦労しているすべての人へ: これが最も簡単で美しい構文ではないことに同意します。この構文は、Python のリスト内包表記の拡張バージョンのようなものであり、それを知っていると、構文を非常に簡単に覚えることができます。それは次のようなものです:
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']
これは実際には、上記の最初のものと同じ構文です。ただし、<select>
通常、コード内の実際の値と要素内に表示されるテキスト (ラベル) を区別する必要があります<select>
。
同様に、コードで必要ですが、ユーザーperson.id
に表示したくありません。id
その名前を表示します。person.name
同様に、コード内の には関心がありません。as
ものにラベルを付けるためのキーワードがあります。したがって、次のようになります。
person.id as person.name for person in people
または、代わりにインスタンス/参照自体person.id
が必要になる場合があります。person
下記参照:
person as person.name for person in people
JavaScript オブジェクトの場合も、同じ方法が適用されます。オブジェクト内のアイテムは(key, value)
ペアで分解されることを覚えておいてください。