AngularJS - флажок «Удалить» работает неправильно и удаляет только по одному - PullRequest
0 голосов
/ 04 июля 2018

Я написал блок кода, который позволяет пользователю проверять или снимать флажки с сущностей, которые будут добавлены или удалены через веб-сервисы. Моя функция добавления, кажется, работает правильно и предоставляет возможность добавлять несколько объектов. Тем не менее, моя функция удаления не работает так же. Он не удаляется каждый раз и может удалять только по одному за раз. Я испытываю затруднения, поскольку код фактически совпадает с надстройкой, поэтому я не знаю, связана ли проблема с AngularJS или, возможно, мой веб-сервис работает неправильно.

Редактировать: Я действительно заметил, что цикл for проходит через все это, но не выбирает правильный идентификатор, он всегда начинается с первого.

var toDeleteService = [];

    for (var i = 0; i < $scope.siteServices.length; i++) {
        if ($scope.siteServices[i].chosen != $scope.siteServices[i].origChosen) {
            if ($scope.siteServices[i].chosen == true) {
                toAddService.push(i);
            }
            else {
                toDeleteService.push(i);
            }
        }
    }

    if (toDeleteService.length > 0) {
        var deleteRequest = {};
        deleteRequest.services = [];

        for (var i = 0; i < toDeleteService.length; i++) {
            var parentServiceName = $scope.siteServices[i].parentServiceName;
            var j = 0;
            for (; j < deleteRequest.services.length; j++) {
                if (deleteRequest.services[j].parentServiceName == parentServiceName) {
                    break;
                }
            }

            if (j == deleteRequest.services.length) {
                deleteRequest.services[j] = {};
                deleteRequest.services[j].parentServiceName = parentServiceName;
                deleteRequest.services[j].subservices = [];
            }
            var service = {};
            service.serviceId = $scope.siteServices[i].serviceId;

            deleteRequest.services[j].subservices.push(service);
        }

        var deleteUrl = "api/sites/" + $scope.targetEntity.siteId + "/services/" + service.serviceId;

        $http.delete(deleteUrl)
            .then(function (response) {
            });
    }

1 Ответ

0 голосов
/ 04 июля 2018

Насколько я понял, вы пытаетесь удалить siteServices на основе номеров, хранящихся в var toDeleteServices = [], поэтому вам нужно получить доступ к этим номерам по их индексу. но в service.serviceId = $scope.siteServices[i].serviceId; вместо этого вы используете i.

service.serviceId = $scope.siteServices[toDeleteServices[i]].serviceId;, так как вам нужен фактический номер услуги для удаления. Если я правильно понял ваш код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...