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