0

我的标记如下所示:

<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-optionsor时发生ng-repeat,似乎如果我将选项硬编码到它确实有效。

服务器只会将我选择的汽车模型作为一维代码(字符串)数组提供。我宁愿保留 ng-model 的数据结构,这样我就可以在发布之前不做任何更改就将其发送出去。

任何帮助表示赞赏!

4

1 回答 1

0

这是一个已知的问题

话虽如此,如果您track byngOptions中删除,则可以将 a 添加model.Cars.code到列表中,model.selectedCars并且两种方式的绑定将起作用。

<select multiple="multiple" size="7" 
    ng-model="model.SelectedCars" 
    ng-options="car.Code as car.Name for car in model.Cars"></select>
于 2014-08-06T18:54:45.490 回答