[解決済み] AngularJSのng-optionsでvalueプロパティを設定するには?
質問
多くの人が(私も含めて)悩んでいるようなことを紹介します。
を使用する場合
ng-options
ディレクティブのオプションを埋めるために、AngularJS で
<select>
タグで、オプションの値を設定する方法がわかりません。これに関するドキュメントは、少なくとも私のような単純労働者にとっては、実に不明瞭です。
このように簡単にオプションのテキストを設定することができるんだ。
ng-options="select p.text for p in resultOptions"
いつ
resultOptions
は例えば
[
{
"value": 1,
"text": "1st"
},
{
"value": 2,
"text": "2nd"
}
]
オプションの値を設定するのは最もシンプルなことであるはず(そしておそらくそうである)ですが、今のところ私はそれを理解できていません。
どのように解決するのですか?
<ブロッククオート参照 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)
のペアを作成します。
関連
-
vueが定義するプライベートフィルタと基本的な使い方
-
[解決済み] Error : 未定義のプロパティ 'map' を読み取ることができません。
-
[解決済み】ローカルファイルを開くことができません - Chrome: ローカルリソースの読み込みが許可されていない
-
モジュールのビルドに失敗しました。Error: ENOENT: no such file or directory, scandir 'D:\.... \node_modules
-
[解決済み] JavaScript で配列に値が含まれているかどうかを確認するにはどうすればよいですか?
-
[解決済み] AngularJSでデータバインディングはどのように機能するのですか?
-
[解決済み] セレクトボックスのオプションをすべて削除してから、オプションを1つ追加して、jQueryで選択するにはどうすればよいですか?
-
[解決済み] Trelloはどのようにユーザーのクリップボードにアクセスするのですか?
-
[解決済み】オブジェクトの配列を文字列のプロパティ値でソートする
-
[解決済み】JavaScriptの関数にデフォルトのパラメータ値を設定する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Vueの要素ツリーコントロールに破線を追加する説明
-
jsを使った簡単な照明スイッチのコード
-
Vueはランニングライト形式のテキストを水平方向にスクロールする機能を実装している
-
Vue+ElementUIによる大規模なフォームの処理例
-
[解決済み】リクエストに失敗していないのに、「TypeError: failed to fetch」が表示される。
-
[解決済み】エラー。Ionic使用中にモジュール '../lib/utils/unsupported.js' が見つかりませんでした。
-
JavaScriptのStringに関する共通メソッド
-
フロントエンド null のプロパティ 'disabled' を読み取れない 問題が解決された
-
jq は html ページとデータを動的に分割する。
-
[解決済み】AngularJSのng-optionsでselectを操作する。