【问题标题】:selected option laravel livewire选择的选项 laravel livewire
【发布时间】:2022-01-12 15:05:19
【问题描述】:
我有一个下拉菜单,在编辑页面中我想显示旧输入。我使用此代码,但它仍然显示“请选择”。问题出在哪里?
<select wire:model.defer="form.department" id="form.department" class="tf-input">
<option value="null" selected disabled>{{ __('Please select') }}</option>
@foreach($this->departments as $department)
<option {{ $form->department_id == $department->id ? 'selected' : '' }} value="{{ $department->id }}" >{{ $department->name }}</option>
@endforeach
</select>
【问题讨论】:
标签:
laravel
laravel-livewire
【解决方案1】:
当您使用wire:model 时,Livewire 不会侦听 HTML 中的 selected 属性,因为它会用组件中的值覆盖它。因此,将其完全删除。
<select wire:model.defer="form.department" id="form.department" class="tf-input">
<option value="null" disabled>{{ __('Please select') }}</option>
@foreach ($this->departments as $department)
<option value="{{ $department->id }}" wire:key="department-{{ $department->id }}">{{ $department->name }}</option>
@endforeach
</select>
如您所见,我删除了添加selected 的部分,但我还在选项中添加了wire:key - 这是因为元素是循环渲染的,这将有助于 Livewire 跟踪所有元素在页面上。
要设置通过wire:model绑定的值,需要在组件中设置值。所以在mount()方法中,你可以这样做
$this->form['department'] = $department->id;