выбранная опция laravel livewire

#laravel #laravel-livewire

Вопрос:

У меня есть выпадающий список, и на странице редактирования я хочу показать старые данные. Я использую этот код, но он все равно показывает «пожалуйста, выберите». В чем проблема?

 lt;select wire:model.defer="form.department" id="form.department" class="tf-input"gt;  lt;option value="null" selected disabledgt;{{ __('Please select') }}lt;/optiongt;  @foreach($this-gt;departments as $department)  lt;option {{ $form-gt;department_id == $department-gt;id ? 'selected' : '' }} value="{{ $department-gt;id }}" gt;{{ $department-gt;name }}lt;/optiongt;  @endforeach lt;/selectgt;  

Комментарии:

1. Я попробовал это, но не получилось

Ответ №1:

Livewire не прослушивает selected атрибуты в HTML , когда вы используете wire:model , потому что он перезапишет их значением компонента. Для этого полностью удалите его.

 lt;select wire:model.defer="form.department" id="form.department" class="tf-input"gt;  lt;option value="null" disabledgt;{{ __('Please select') }}lt;/optiongt;  @foreach ($this-gt;departments as $department)  lt;option value="{{ $department-gt;id }}" wire:key="department-{{ $department-gt;id }}"gt;{{ $department-gt;name }}lt;/optiongt;  @endforeach lt;/selectgt;  

Как вы можете видеть, я удалил части , которые добавляют selected , но я также добавил a wire:key к параметрам — это связано с тем, что элементы отображаются в цикле и помогут Livewire отслеживать все элементы на странице.

Чтобы задать значение , связанное через wire:model , вам необходимо задать значение в компоненте. Таким образом, в этом mount() методе вы можете сделать

 $this-gt;form['department'] = $department-gt;id;