使用ng-options设置所选项目不起作用

时间:2015-07-12 10:11:01

标签: javascript angularjs ng-options

我使用以下数组来使用ng-options填充选择下拉列表但是当下拉列表显示时我无法设置所选选项。

这是数据数组

{
                        'vehicle_year_id': 12,
                        'vehicle_color_id': 522,
                        'start_date': 'Thu Mar 26 2015 01:22:48 GMT+0000 (UTC)',
                        'end_date': 'Mon Sep 15 2014 14:37:15 GMT+0000 (UTC)',
                        'meta': {
                            'colors': [{ 'id': 522, 'caption': 'Green' }, { 'id': 523, 'caption': 'Blue' }],
                            'years': [{ 'id': 12, 'year': 2015 }, { 'id': 13, 'year': 2016 }]
                        },
                        'quantity': 8,
                        'duration': 10
                    },

和部分代码

 <select ng-model="details.vehicle_color_id" ng-init="details.vehicle_color_id || details.meta.colors[0].id" class="form-control" ng-options= "color.id as color.caption for color in details.meta.colors track by color.id">                              
                      </select>  

我可以在下拉列表中看到数据列表,但所选字段根本没有显示。使用该选项的正确方法是什么?

更新:

我刚做了以下更改

 <select ng-model="details.vehicle_color_id" ng-init="details.vehicle_color_id=(details.vehicle_color_id || details.meta.colors[0].id)" class="form-control" ng-options= "color.id as color.caption for color in details.meta.colors" ng-change="getValue($index)">                              
                          </select>

并使用getValue()检查模型的值,它显示正确的数据,并且还选择了默认值。我很好奇它为什么会这样发生。

1 个答案:

答案 0 :(得分:0)

您的ng-init应设置ng-model范围变量

的值

<强>标记

<select ng-model="details.vehicle_color_id" 
  ng-init="details.vehicle_color_id=(details.vehicle_color_id || details.meta.colors[0].id)"
  class="form-control" 
  ng-options="color.id as color.caption for color in details.meta.colors" 
  ng-change="getValue($index)">
</select>

Working Plunkr