选定选项 laravel livewire

wer*_*tyu 1 laravel laravel-livewire

我有一个下拉菜单,在编辑页面中我想显示旧的输入。我使用此代码,但它仍然显示“请选择”。哪里有问题?

<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>
Run Code Online (Sandbox Code Playgroud)

Qir*_*rel 6

selected当您使用 时, Livewire 不会侦听HTML 中的属性wire:model,因为它会用组件中的值覆盖它。因此,请将其完全删除。

<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>
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我删除了添加 的部分selected,但我还在选项中添加了wire:key- 这是因为元素是在循环中渲染的,并且将帮助 Livewire 跟踪页面上的所有元素。

要设置通过 绑定的值wire:model,需要在组件中设置该值。所以在该mount()方法中,你可以这样做

$this->form['department'] = $department->id;
Run Code Online (Sandbox Code Playgroud)