192

Angular とng-options.

単純な配列があり、それを使用して選択を開始したいと考えています。しかし、オプション値=ラベルが必要です。

script.js

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

html

<select ng-model="myselect" ng-options="o for o in options"></select>

私が得るもの:

<option value="0">var1</option>
<option value="1">var2</option>
<option value="2">var3</option>

私が欲しいもの:

<option value="var1">var1</option>
<option value="var2">var2</option>
<option value="var3">var3</option>

だから私は試しました:

<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>

(しかし、うまくいきませんでした。)

編集:

私のフォームは外部から送信されるため、値として 0 ではなく 'var1' が必要です。

4

5 に答える 5

309

3 回目の試行で実際に正解しました。

 <select ng-model="myselect" ng-options="o as o for o in options"></select>

ここで実際の例を参照してください: http://plnkr.co/edit/xEERH2zDQ5mPXt9qCl6k?p=preview

秘訣は、とにかく AngularJS がキーを 0 から n までの数字として書き込み、モデルを更新するときに元に戻すことです。

その結果、HTML は正しくないように見えますが、値を選択するとモデルは適切に設定されます。(つまり、AngularJS は「0」を「var1」に変換します)

Epokk によるソリューションも機能しますが、データを非同期でロードしている場合、常に正しく更新されるとは限りません。ngOptions を使用すると、スコープが変更されたときに正しく更新されます。

于 2013-08-13T06:34:45.800 に答える