私のマークアップは次のようになります。
<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ます。オプションをハードコーディングすると機能するようです。
サーバーは、選択した車のモデルのみをコード (文字列) の 1 次元配列として提供します。投稿する前に変更せずに送信できるように、ng-model のデータ構造をそのまま保持したいと思います。
どんな助けでも大歓迎です!