It seems I can not find this bug. If I delete first item in list, the last one gets deleted. Can anyone see what am I doing wrong?
HTML
<div ng-repeat="additional in clientAdditionals track by $index"> <div class="row"> <div class="form-group col-xs-6"> <ng-form name="additionalSelectFieldForm"> <select class="form-control" ng-options="item.label for item in clientAdditionalsSelectItems" name="additionalSelect" ng-model="item" ng-change="setClientAdditionals($index, item.name); validateClientAdditionals();" ng-required="true"></select> </ng-form> </div> <div class="form-group col-xs-6"> <div class="input-button-on-right"> <div class="withInput"> <ng-form name="additionalValueFieldForm"> <input type="text" class="form-control" name="additionalValue" ng-model="additional.value" ng-required="true" /> </ng-form> </div> <div class="withButton"> <button class="btn btn-primary circle" ng-click="deleteClientAdditionals(additional)"><span class="fa fa-times"></span></button> </div> </div> </div> </div> </div> AngularJS
$scope.clientAdditionals = []; $scope.createClientAdditional = function(item) { $scope.clientAdditionals.push({ name : undefined, value : undefined }); }; $scope.setClientAdditionals = function(index, name) { $scope.clientAdditionals[index].name = name; } $scope.deleteClientAdditionals = function(additional) { $scope.clientAdditionals.splice($scope.clientAdditionals.indexOf(additional), 1); $scope.validateClientAdditionals(); }; If you need some more of the code or some extra explanation, please let me know.