Livewire 表单内容消失

Livewire form content dissapears

我在包含表单的 livewire 视图中有此代码。这是一个简单的 select 字段,您应该在其中 select 列表中的文档类型。

<div>
    <label for="documenttype" class="form-label"><strong>Document type</strong></label>
    <select wire:model="documenttype_id" class="form-control" id="documenttype" aria-describedby="documenttypeHelp">
        <option selected>{{ __( 'Choose' ) }}</option>
        @foreach( $documenttypes as $documenttype )
            <option value="{{ $documenttype->id }}" @if( isset( $documenttype_id ) && ( $documenttype_id == $documenttype->id ) ) selected @endif>
                {{ $documenttype->name }}
            </option>
        @endforeach
    </select>
</div>

问题是我希望它在编辑客户端时预先select输入正确的值。但是由于某种原因,当我在选项循环中添加此代码:@if( isset( $documenttype_id ) && ( $documenttype_id == $documenttype->id ) ) selected @endif 时,表单开始表现异常。 每次填写表格的人 select 一个选项,内容就会变成空白。

这是情况 1(在 select 选择一个选项之前):

这是情况 2(在 select 选择选项之后):

我不知道为什么会这样,有人可以指导我如何解决这个问题吗?

解决此问题的快速方法是从您的组件 mount 方法分配 selected 值。

public function mount() {

    $this->documenttype_id = $client->documenttype_id
    //$client->documenttype_id being the previously selected value from your db
}

这将自动 select 您的选项,您不需要在选项标签上使用 if 语句。

将 wire:ignore.self 添加到根 select 的 div。使用此修饰符,您指示 Livewire 不要更新元素本身,但允许修改其子元素。