3

現在、ng-options ディレクティブを使用して選択ボックスをロードしようとしています。

ただし、作成されたオプションの値を変更することはできません。0 から 3 になるだけですが、これらの値を通過する「eigenschap_id」と同じにする必要があります。

したがって、0 ~ 3 ではなく 23 ~ 26 の値が必要です。

どこが悪いのでしょうか?

これが私が使用しているコードです。

コントローラ:

$scope.eigenschappen.game = categories.Game;

Jsonstring/オブジェクト:

 [{"cat_id":6,"cat_name":"Game","eigenschap_name":"RPG","eigenschap_id":23},{"cat_id":6,"cat_name":"Game","eigenschap_name":"Strategie","eigenschap_id":24},{"cat_id":6,"cat_name":"Game","eigenschap_name":"Avontuur","eigenschap_id":25},{"cat_id":6,"cat_name":"Game","eigenschap_name":"Simulatie","eigenschap_id":26}]

HTML ビュー

<select data-ng-options="i.eigenschap_id as i.eigenschap_name for i in eigenschappen.game" ng-model="chosen"></select>

生成されたhtml

<select ng-model="chosen" data-ng-options="i.eigenschap_id as i.eigenschap_name for i in eigenschappen.game" class="ng-pristine ng-valid">
    <option value="?" selected="selected"></option>
    <option value="0">RPG</option>
    <option value="1">Strategie</option>
    <option value="2">Avontuur</option>
    <option value="3">Simulatie</option>
</select>
4

1 に答える 1

8

Angular が HTML 選択オプションを生成するとき、(各 option 要素の) value 属性は期待したものとは異なる場合があります... 次のように設定されます: . 配列をデータソースとして使用する場合、値は配列 index に設定されます。オブジェクトをデータソースとして使用する場合、値はキー/プロパティ名に設定されます

ユーザーがオプションの 1 つを選択すると、Angular はインデックス (またはキー) を使用して配列 (またはオブジェクト) 内の値をルックアップします。ルックアップされた値は、モデルが設定されているものです。(つまり、モデルは HTML に表示される値に設定されていません! これは多くの混乱を引き起こします。)

たとえば、配列データソースの場合、Angular はモデル値を、選択されたオプション値パラメーターによって指定されたインデックスの配列内の値に設定します。データソース配列が [ 2013, 2014, 2015] の場合、生成された HTML には options 要素の値が 0、1、2 になります。2 番目の項目を選択すると、Angular は array[1] を調べて値 2014 を見つけます。これがモデルの設定値です。

ソース: http://docs.angularjs.org/api/ng.directive:selectに関する Mark RajCok のコメント

于 2013-06-20T11:55:18.637 に答える