我的标记看起来像这样:
<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-options
或ng-repeat
时才会出现这种情况,好像我将选项硬编码到它确实有效。
服务器仅提供我选择的汽车模型作为代码(字符串)的1d数组。我宁愿保留ng-model的数据结构,所以我可以在发布之前发送它而不做任何改动。
感谢任何帮助!
答案 0 :(得分:0)
如果您从 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>