AngularJS:在列表框中预选多个选项

时间:2014-08-06 17:48:23

标签: angularjs select options ng-options angularjs-ng-options

我的标记看起来像这样:

<select multiple="multiple" size="7" 
     ng-model="model.SelectedCars" 
     ng-options="car.Code as car.Name for car in model.Cars track by car.Code">
</select>

我已使用以下内容初始化我的范围:

$scope.model.SelectedCars = [];
$scope.model.Cars = [
{Name: 'Car 1', Code: 'id01'},
{Name: 'Car 2', Code: 'id02'},
{Name: 'Car 3', Code: 'id03'}
];

这一切都按照我想要的方式工作(车名显示在列表框中,代码用作值)。当我从列表框中选择某些内容(甚至是多个值)时,$scope.model.SelectedCars数组最终填充了每个选定汽车的代码(1d字符串数组)。

我的问题是,如果我将有效代码手动推送到$scope.model.SelectedCars数组,为什么它没有在UI控件中反映为选中状态。只有在使用ng-optionsng-repeat时才会出现这种情况,好像我将选项硬编码到它确实有效。

服务器仅提供我选择的汽车模型作为代码(字符串)的1d数组。我宁愿保留ng-model的数据结构,所以我可以在发布之前发送它而不做任何改动。

感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

This is a known issue

如果您从 ngOptions 中删除track by,则可以在model.Cars.code列表中添加model.selectedCars,双向绑定将起作用。< / p>

<select multiple="multiple" size="7" 
    ng-model="model.SelectedCars" 
    ng-options="car.Code as car.Name for car in model.Cars"></select>