Javascript 在选择中为ng模型指定对象

Javascript 在选择中为ng模型指定对象,javascript,angularjs,json,angular-ngmodel,angularjs-ng-init,Javascript,Angularjs,Json,Angular Ngmodel,Angularjs Ng Init,我在一个范围内迭代,并为每个索引填充新的select选项。这些选项与我正在迭代的范围无关,而是不同类型的选项。代码如下: <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.

我在一个范围内迭代,并为每个索引填充新的select选项。这些选项与我正在迭代的范围无关,而是不同类型的选项。代码如下:

<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>

只需绑定到您的
booking.roomSelection
并删除
ng init
。如果您选择两个选项,它们的值将
推送到
booking.roomSelection
booking.roomSelection
中。roomSelection将是一个数组

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

结果是ng model属性必须更改为:
booking.roomSelection[$index].roomType

还必须在控制器中声明对象数组,例如
$scope.booking.roomSelection=[]

声明全文如下:

<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>

房间{{$index+1}


不幸的是,这不会推送到ng模型,它只分配被所选选项的值覆盖的选择值。例如,book.roomSelection将永远是一个单一值。@Imranz您想选择两个选项并在booking.roomSelection中获取它们的值,是吗?在Selection上添加
多个属性谢谢您尝试帮助Suren,我应该说清楚的。我为每个房间设置了一个新的下拉框(不是多选)。您也可以使用
ng model=“booking.roomSelection[$index]”如果
ng options=“obj as obj.roomType for obj in roomTypes”
<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>