2013-06-20 47 views
3

目前我正在尝试使用ng-options指令加载选择框。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> 

回答

8

当Angular生成HTML选择选项时,(每个选项元素的)属性值可能不是您所期望的...它设置如下: 。当使用数组作为数据源时,该值被设置为数组索引 。当使用对象作为数据源时,该值设置为键/属性名称

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

例如,对于数组数据源,Angular会将模型值设置为数组中的值索引由选定的选项值参数指定。如果您的数据源数组为[2013,2014,2015],则生成的HTML对于选项元素将具有值0,1,2。如果您选择第二项,角看起来阵列[1]找到该值2014年,这是什么型号,然后设置为

来源:马克RajCok评论http://docs.angularjs.org/api/ng.directive:select

+0

,我从来不知道关键的事实这个价值与模型的实际价值无关。如果有疑问,您可以使用{{the_selects_model}}在屏幕上显示选择的模型值。谢谢。 –

相关问题