Добавить атрибуты к выбранным элементам списка в select2

Вот рабочий jsfiddle. Я хочу добавить атрибуты (в частности, идентификатор) к созданным элементам <li>. Мой вариант использования немного отличается от скрипки, вместо того, чтобы использовать массив, я получаю данные от ajax. Кроме того, я хочу дать своим пользователям возможность создавать новые теги, если их нет в базе данных. Сохранение вновь созданного списка элементов с идентификаторами — это гораздо лучший способ, чем просто классы. Могу ли я изменить атрибуты файла введите здесь описание изображения<li> элементы созданы?

Мой фактический код выглядит примерно так:

$(".js-data-example-ajax").select2({
        ajax : {
            url : "/content/search_skills",
            dataType : 'json',
            delay : 250,
            data : function(params) {
                return {
                    q : params.term, // search term
                    page : params.page
                };
            },
            processResults : function(data, params) {
                params.page = params.page || 1;

                return {
                    results : data.items,
                    pagination : {
                        more : (params.page * 5) < data.total_count
                    }
                };
            },
            cache : true
        },
        escapeMarkup : function(markup) {
            return markup;
        }, // let our custom formatter work
        minimumInputLength : 1,
        templateResult : formatRepo,
        templateSelection : formatRepoSelection,
        tags : true,
        createTag : function (params) {
            return {
                id: params.term,
                text: params.term,
                newOption: true
              }
            },
    });
    function formatRepo(repo) {
        if (repo.loading)
            return repo.text;

        var markup = '<ul class="list-group clear-list m-t">' + '<li class="list-group-item fist-item"><span class="pull-right">' + repo.id + '</span> <span class="label label-success">' + repo.count + '</span> ' + repo.text + '</li>';

        return markup;
    }

     function formatRepoSelection (repo) {
         var markup = repo.text;
         return markup;
          }

И мой jsp (html):

<select class="js-data-example-ajax" style="width: 100%" multiple="multiple">
    //Iterating through database query result to pre-load option items
    <option value="<%=skill_objective.get("id")%>" selected="selected"><%=skill_objective.get("id")%> <%=skill_objective.get("name") %></option>
</select>

person absin    schedule 31.03.2017    source источник
comment
Пожалуйста, оставьте комментарий, если вы голосуете против, чтобы я мог улучшить вопрос. Спасибо!   -  person absin    schedule 31.03.2017


Ответы (1)


Вот рабочее решение:

$(".js-data-example-ajax").select2('data') даст мне хэш всех выбранных объектов.

person absin    schedule 31.03.2017