我有兩個範圍(數組)。一個房間數據和一個房間清單。 因此,每次用戶想要爲每個房間添加一些數據時,都必須從下拉列表中選擇它(選擇選項)並添加他想要的數據。 現在,我需要排除每個房間tat已經從下拉列表中的一些數據,我想嘗試。查找一個項目是否在一個數組中,並從選擇選項中將它從angularjs中排除
這裏的房間列表:
$scope.propertyRooms = [
{
id: "1",
name: "Room 1 Sea View"
},
{
id: "2",
name: "Room 2 Mountain View"
},
{
id: "3",
name: "Room 3"
}
];
這裏是房間裏的數據(排除):
$scope.ratePlansRoomsSettings = [
{
id: "1",
name: "Room 1 Sea View",
allotment: "10",
minPax: "1",
maxPax: "5",
maxAdult: "5",
maxChild: "4",
maxInf: "1",
childAllowed: true
},
{
id: "2",
name: "Room 2 Mountain View",
allotment: "10",
minPax: "1",
maxPax: "10",
maxAdult: "10",
maxChild: "8",
maxInf: "1",
childAllowed: false
}
];
這裏是我怎麼想排除選擇:
$scope.getAvailableRooms = function(){
var selectedRooms = [];
for(i = 0; i < $scope.propertyRooms.length; i++){
var found = false;
for(j = 0; j < $scope.ratePlansRoomsSettings.length; j++){
if($scope.ratePlansRoomsSettings[j].id == $scope.propertyRooms[i].id){
found = true;
break;
}
}
if(!found){
selectedRooms.push($scope.propertyRooms[i]);
}
return $scope.propertyRooms;
}
}
這裏是選擇選項:
<select ng-model="room.name" ng-options="p.name as p.name for p in getAvailableRooms()" ng-hide="room.name" class="form-control"></select>
問題是,選擇選項始終將propertyRooms範圍內的所有房間都轉換爲只有未選中的房間。
我沒有收到任何錯誤,但我相信我錯了for函數。
你不應該返回'selectedRooms'而不是未過濾的$ scope.propertyRooms'? – Jonas 2014-11-04 09:09:42
@Jeyp我已經嘗試過,但我得到一個空的選項。即使在console.log中也是空的。 – 2014-11-04 09:11:37
另外,不應該返回循環後,它目前在循環中,不是嗎? – Jonas 2014-11-04 09:12:25