[英]Remove one of the ng-repeat selected item onItemSelect event in angularjs dropdown multiselect
我在表單上使用AngularJS Dropdown Multiselect 。 如果滿足條件,則在onItemSelect
事件上刪除selectedItem
的最快方法是什么?
<tr ng-repeat="detail in mainCtrl.lineDetails">
<td>
<div ng-dropdown-multiselect="true" options="mainCtrl.Options"
selected-model="detail.SelectedOptions"
extra-settings="{
searchField: 'name',
enableSearch: true,
displayProp: 'name',
scrollableHeight: '300px',
scrollable: true,
keyboardControls: true,
idProperty: 'id',
buttonClasses: 'form-control drpdwn-btn',
styleActive: true,
selectionLimit:detail.SelectedLimit}"
events="{ onItemSelect: mainCtrl.checkSelected,
onSelectAll: mainCtrl.checkSelectedAll }">
</div>
</td>
</tr>
目前,我只是經歷了整個mainCtrl.lineDetails
然后detail.SelectedOptions
然后檢查相同的ID每個項目,然后檢查其是否符合然后我的狀態在陣列中移除。
您可以在ng-repeat上跟蹤索引,然后在Item Select上傳遞索引並從mainCtrl.lineDetails數組拼接元素。
例:
<tr ng-repeat="(index, detail) in mainCtrl.lineDetails">
<td>
<div ng-dropdown-multiselect="true" options="mainCtrl.Options"
selected-model="detail.SelectedOptions"
extra-settings="{
searchField: 'name',
enableSearch: true,
displayProp: 'name',
scrollableHeight: '300px',
scrollable: true,
keyboardControls: true,
idProperty: 'id',
buttonClasses: 'form-control drpdwn-btn',
styleActive: true,
selectionLimit:detail.SelectedLimit}"
events="{ onItemSelect: removeLineDetailItem,
onSelectAll: mainCtrl.checkSelectedAll }">
</div>
</td>
// Make a function on your ctrl which will be fired onItemSelect event
$scope.removeLineDetailItem(item) {
const index = $scope.lineDetails.findIndex(val => val == item);
$scope.lineDetails.splice(index, 1)
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.