Данные возвращаются как неопределенные - PullRequest
0 голосов
/ 27 апреля 2018

У меня есть эта сортируемая функция, в которой я хочу иметь возможность добавлять пользователей в группу. Когда я перетаскиваю пользователя из таблицы пользователей в таблицу групп, я хочу иметь возможность проверить, существует ли этот идентификатор в таблице групп, и если это так, я хочу ответить сообщением об ошибке. Однако, когда я пытаюсь выполнить цикл Trou и получить идентификаторы из таблицы групп, я получаю неопределенное значение.

HTML-код:

<div class="userContainer">
    <div id="userDiv">
        <ul class="userList dragable" ></ul>
    </div>

    <div id="groupDiv">
        <select id="DropDown"></select>
        <input id="btnGetGroups" class="btn btn-success" type="button"
               value="Hämta grupper" />
        <select id="DropDownGroups"></select>
        <input id="btnShowGroups" class="btn btn-success" type="button"
               value="Visa grupp" />
        <ul class="usersOfGroupList dragable"></ul>
    </div>
</div>

Вот код для заполнения групповой таблицы текущими пользователями:

$('#btnShowGroups').click(function () {
        var e = document.getElementById("DropDownGroups");
        groupId = e.options[e.selectedIndex].value;
        $('.usersOfGroupList').empty();

        $.getJSON("mylinkgoeshere" + groupId + "", function (result) {
            $.each(result, function (i, value) {
                $('.usersOfGroupList').append($("<li id='userElement' data-userId='' ></li>").data('userId', value.Id).html(value.FirstName + " " + value.LastName));
                $(".usersOfGroupList").addClass("addBorder");
            });
        });
    });

Как вы видите, я использую 'userId' в качестве ключа в свойстве data-здесь.

Сортируемый код выглядит следующим образом:

 $(".dragable").sortable({
            connectWith: ".usersOfGroupList",
            remove: function (e, ui) {
                var $this = $(this);
                var childs = $this.find('li');
                if (childs.length === 0) {
                    $this.text("Nothing");
                }
            },
            receive: function (e, ui) {
                var array = [];
                var $this = $(this);
                var children = $this.find('li');
                for (var i = 0; i < children.length; i++) {
                    var specificId = children[i].item.data('userId');
                    array.push(specificId);
                    console.log(array);
                };

В свойстве receive я пытаюсь получить текущие идентификаторы пользователя, выполняя цикл по всем элементам li, а затем помещая идентификаторы в массив, но он возвращает только неопределенное значение. Я отладил, и li-элементы есть, но он выдает мне следующее сообщение об ошибке:

Uncaught TypeError: Невозможно прочитать свойство 'data' из неопределенного на HTMLUListElement.receive

...