3

範囲全体を繰り返し、各インデックスに対して新しい選択オプションを設定しています。オプションは、反復処理中の範囲には関係しませんが、異なる種類のオプションがあります。コードは次のようになります:選択にオブジェクトを割り当てる

<div ng-repeat="i in range(booking.numberOfRooms) track by $index"> 
    <p>Room {{$index + 1}}</p> 
    <select ng-model="booking.roomSelection[$index]" ng-options="obj.roomType as obj.roomType for obj in roomTypes" ng-init="booking.roomSelection[$index] = { id: $index + 1, roomType: 'Double' }"> </select> 
</div> 

ng-model(ng-initのようなもの)にオブジェクト配列を割り当てる方法はありますか?例えば。二つの部屋のために、NG-モデルの結果のようなものになります。単にあなたのbooking.roomSelectionに特異的に結合する

booking.roomSelection = [{id: 1, roomSelection: 'Double'}, {id: 2, roomSelection: 'Double'}] 

答えて

1

はNG-model属性に変更する必要があったことが判明する:booking.roomSelection[$index].roomType

オブジェクト配列もなければなりませんコントローラーで宣言されています。 $scope.booking.roomSelection = [];

フル宣言ビーイング:これはNG-モデルにプッシュしない

<div ng-repeat="i in range(booking.numberOfRooms) track by $index"> 
    <p>Room {{$index + 1}}</p> 
    <select ng-model="booking.roomSelection[$index].roomType" ng-options="obj.roomType as obj.roomType for obj in roomTypes" ng-init="booking.roomSelection[$index] = { id: $index + 1, roomType: 'Double' }"></select> 
</div> 
+0

roomTypeのobjの 'ng-option =" obj.roomTypeとして 'ng-model =" booking.roomSelection [$ index] "'を使用することもできます。 –

1

をし、次の2つのオプションを選択します.IF ng-initを削除し、その値がbooking.roomSelectionbooking.roomSelectionpushedになります配列

<select multiple ng-model="booking.roomSelection" ng-options="obj.roomType as obj.roomType for obj in roomTypes"></select> 
+0

残念ながら、それだけで選択したオプションの値で上書きされます選択の値を割り当てます。私。 book.roomSelectionは単一の値にしかなりません。 –

+0

@ImranNZ 2つのオプションを選択し、 'booking.roomSelection'でそれらの値を取得したいと思いますか? –

+0

selectに 'multiple'属性を追加 –