Select2 Inside Livewire Modal не повторно повторно откроет модальныйJavascript

Форум по Javascript
Anonymous
Select2 Inside Livewire Modal не повторно повторно откроет модальный

Сообщение Anonymous »

Я использую livewire в проекте Laravel и имею раскрывающееся список select2 внутри модала. Раскрывающийся список используется для выбора страны, и она должна инициализации со списком стран, а также предварительно выбирать страну, назначенную в настоящее время для данного состояния. < /P>
в первый раз < /strong> я открываю модал, все работает нормально: < /p>
  • Компонент Select2 инициализирует правильно. < /p>
    < /li >
    Список загрузки стран. Показать в поле выбора
    .
Однако, когда я Сохранить и модал закрывается, Когда я открываю его для любого другого Состояние , компонент Select2 не может повторно повторно. Даже при пользовательском JavaScript он не повреждается и не отображает выбранную страну.

[*] Это не сработало , потому что LiveWire повторно использует модальный контент динамически.

Я видел решения аналогичных вопросов на этом форуме, в которых говорилось, что атрибут data-dropdown-parent , который решил мою проблему для некоторых Степень, но в некоторых случаях это все еще сохраняется. < /p>
< /li>
< /ul>
< /li>
< /ol>
написание обычая JavaScript для повторного определения SELECT2 В LiveWire Updates < /strong> < /p>

Я написал следующий код, чтобы обнаружить, когда модал обновляется, но Select2 все еще не повторно повторно. < /li>
< /ul>



{{ $country->name }} ({{ $country->code }})


< /code>

document.addEventListener('livewire:initialized', function() {
// Initialize on modal show
$('#kt_modal_update_state').on('shown.bs.modal', function() {
// First destroy any existing select2 instance
if ($('#select_state_update_country').data('select2')) {
$('#select_state_update_country').select2('destroy');
}

// Initialize select2
$('#select_state_update_country').select2({
placeholder: 'Select an option',
allowClear: true,
dropdownParent: '#kt_modal_update_state'
}).on('change', function() {
@this.set('country_id', $(this).val());
});

// Set the selected value after initialization
setTimeout(function() {
$('#select_state_update_country').val(@this.country_id).trigger('change');
}, 100);
});
});

// Re-initialize when Livewire updates
document.addEventListener('livewire:updated', function() {
if ($('#kt_modal_update_state').is(':visible')) {
$('#select_state_update_country').val(@this.country_id).trigger('change');
}
});



Подробнее здесь: https://stackoverflow.com/questions/794 ... dal-reopen

Вернуться в «Javascript»