3

目前我正在尝试使用 ng-options 指令加载一个选择框。

但是我无法更改创建选项的值,它只是从 0 到 3,而我希望这些值与我通过的“eigenschap_id”相同。

所以它的值应该是 23-26 而不是 0-3

它哪里出错了?

这是我正在使用的代码。

控制器:

$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 选择选项时,(每个选项元素的) value 属性可能不是你所期望的......它的设置如下:当使用数组作为数据源时,值设置为数组索引。使用对象作为数据源时,值设置为键/属性名称

当用户选择其中一个选项时,Angular 使用索引(或键)在数组(或对象)中查找值——查找到的值就是模型设置的值。(因此,模型没有设置为您在 HTML 中看到的值!这会引起很多混乱。)

例如,对于数组数据源,Angular 会将模型值设置为数组中由选定选项值参数指定的索引处的值。如果您的数据源数组是 [ 2013, 2014, 2015],则生成的 HTML 将具有选项元素的值 0、1、2。如果您选择第二项,Angular 会在数组 [1] 中查找值 2014,这就是模型随后设置的值

来源:Mark RajCok 对http://docs.angularjs.org/api/ng.directive:select的评论

于 2013-06-20T11:55:18.637 回答