У меня есть список предметов продажи, и для каждого предмета продажи есть выпадающий список, в котором вы можете выбрать из списка доступных идентификаторов для назначения предмету продажи.Выбор должен быть уникальным для каждого предмета продажи.Если 2 выбрано из выпадающего списка saleItem1, 2 не может быть доступно в выпадающем списке для saleItem2.
После выбора идентификатора из раскрывающегося списка мне нужно удалить его из списка и заменить его старым идентификатором.При выборе идентификатора запускается ng-изменение, которое корректно обновляет список.Однако строка, помеченная звездочкой, которая удаляет выбранный идентификатор из списка, приводит к повторному запуску ng-change с нулевым значением в качестве нового идентификатора.
Я изо всех сил пытаюсь найти решение, чтобы обойтиthis.
Тот же код отлично работает в AngularJS 1.2, но после перехода на 1.7 я вижу эту проблему.
$scope.updateSaleItemIds = function(saleItem, newid) {
var ind = $scope.availableSaleItemIds.indexOf(newid);
if (!isNaN(saleItem.id)) {
*$scope.availableSaleItemIds[ind] = saleItem.id;*
}
else {
$scope.availableSaleItemIds.splice(ind,1);
}
$scope.availableSaleItemIds.sort(function(a, b){return a - b});
var indE = $scope.saleItems.indexOf(saleItem);
$scope.saleItems[indE].id = newid;
};
HTML
<tr ng-repeat="saleItem in saleItems" class="createForm">
<select ng-model="selectedId"
ng-options="id for id in availableSaleItemIds"
ng-change="updateSaleItemIds(saleItem, selectedId)">
<option value="">{{saleItem.id}}</option>
</select>
</tr>