给ng-model指定一个select对象

Assign ng-model an object in a select

本文关键字:一个 select 对象 ng-model      更新时间:2023-09-26

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

<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-model的结果应该是这样的:

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

简单地绑定到您的booking.roomSelection并删除ng-init。如果您将选择两个选项,它们的值将是pushedbooking.roomSelectionbooking.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>