我有一个表,其中一列中有一个复选框。当复选框被选中时,我将行推入数组。
我试图用下面的..real世界来更好地解释这一点
该表可以包含具有重复id的行(行(flat_id
)的列不同)。我上面提到的重复id是user_map_id
。
当我选中(单击复选框)一行时,我希望禁用具有相同user_map_id
的其他行。
因此,当检查行时,我将user_map_id
存储在一个数组中。然后我这样做:
ng-disabled="selectedUserMapIdArray.indexOf(flat.user_map_id) >= 0
也就是说,如果user_map_id
存在于具有选定user_map_id
的数组中,我将禁用该行,但这也会禁用我选中的那个,并且如果我想取消选中它,我将无法取消选中它。
因此,我也将flat_id
推入数组,并执行了以下操作:
ng-disabled="selectedUserMapIdArray.indexOf(flat.user_map_id) >= 0 && selectedFlatNumArray.indexOf(flat.flat_id) < 0 "
即,如果行的user_map_id
存在于selectedUserMapIdArray
(存储user_map_id
)数组中,而不存在于selectedFlatNumArray
(存储flat_id
)中,则禁用该行
但是现在,当我检查具有与重复flat_id
之一flat_id
相同的特定user_map_id
的行,然后再次检查该组中的一个时,具有公共flat_id
的行不会被禁用,因为我上面检查的flat_id
存在于selectedFlatNumArray
(存储flat_id
)中。
用现实世界的解释
这是一个截图:
表中的行是单位所有者和居住者的列表(两者都有user_map_id
)。一个单位业主可以有多个单位(因此表中有重复的user_map_id
)。业主可以拥有多个单位(不同的flat_ids
)。
但是公寓业主可以有一个居住者(same flat_id
different user_map_id
)。住客可以住在业主的多个单位中的一个(same flat_id
different user_map_id
)。
我希望能够检查任何单位的业主(其他人是残疾的),也是一个住户(如果我想)。
如果我检查row与该单位业主的其中一个单位,属于同一单位业主的其他行被禁用,并且工作正常。
但是,当我检查一个占有者的行,然后再次检查该占有者的平面所有者(没有相同的flat_id
)时,具有相同flat_id
的行不会被禁用,因为flat_id
存在于selectedFlatNumArray
(存储flat_id)中
我该怎么做呢?
下表:
<tbody>
<tr ng-repeat="flat in someObj.flatsArray | filter:searchFlat">
<td>{{ flat.occupant_name || flat.owner_name}}</td>
<td>{{flat.flat_no}}</td>
<td class="text-center">
<input class="" name="{{flat.flat_no}}" ng-attr-title="{{(selectedUserMapIdArray.indexOf(flat.user_map_id) >= 0 && selectedFlatNumArray.indexOf(flat.flat_id) < 0) ? 'This user has been already invited' : ''}}"
ng-disabled="selectedUserMapIdArray.indexOf(flat.user_map_id) >= 0 && selectedFlatNumArray.indexOf(flat.flat_id) < 0 "
type="checkbox" ng-change="checkChanged(flat.isChecked, flat)" ng-model="flat.isChecked" />
</td>
</tr>
</tbody>
https://stackoverflow.com/questions/53644580
复制相似问题