2015-09-01 4 views
0

У меня есть сценарий, который получает некоторые данные из бэкэнд и заполняет выпадающее меню select2. Проблема в том, что вызов ajax называется 2 раза всегда, и он не должен быть таким. Я не уверен, что я делаю неправильно ... любая помощь будет оценена.Select2 ajax выполняется 2 раза

это мой код:

var select2Element = $('select').select2({ 
    theme: "classic", 
    escapeMarkup: function (markup) { return markup; }, 
}); 

select2Element.on('select2:opening', function(event) { 
    var clicked = $(this); 

    var route = "{{ path('get_attribute_list', {'articleId': 'ARTICLEID', 'attributeGroupId': 'ATTRIBUTEGROUPID'}) }}" 
    var url = route.replace("ARTICLEID", $(this).attr('data-articleId')).replace('ATTRIBUTEGROUPID', $(this).attr("data-attributeGroupId")); 

    $.ajax ({ 
     url: url, 
     dataType: 'json', 
     async: false, 
     type: "GET", 
    }).then(function (data) { 

     //@TODO get out elements already inserted 

     for (var d = 0; d < data.length; d++) 
     { 
      var item = data[d]; 

      // Create the DOM option that is pre-selected by default 
      var option = new Option(item.text, item.id, true, true); 

      // Append it to the select 
      clicked.append(option); 
     } 
     // Update the selected options that are displayed 
     clicked.trigger('change'); 
    }); 

}); 

var inputResult = []; 
select2Element.on('select2:select', function(e) { 
    var jsonValue = { 
     "articleId": $(this).attr("data-articleId"), 
     "attributeGroupId": $(this).attr("data-attributeGroupId"), 
     "attributeId": e.params.data.id 
    } 
    inputResult.push(jsonValue); 

    $('#addAttributes').val(JSON.stringify(inputResult)); 
}); 

select2Element.on('select2:close', function() { 
    $(this).html(''); 
}); 

ответ

0

Кажется есть ошибка в «выбор2: открытый» и «ВЫБ.2: открытие». Есть исправление для этого, но не опубликовано. Во всяком случае, кто имеет эту проблему, пока она не будет устранена можно увидеть более подробную информацию здесь:

https://github.com/select2/select2/issues/3503

и исправление для этого здесь:

https://github.com/select2/select2/commit/c5a54ed70644598529a4071672cca4a22b148806

Смежные вопросы