开发者问题收集

Livewire Select2 在更改时停止重新渲染

2021-07-17
1349

我正在处理一个带有 select2 的表单。这个想法是,当用户选择或更改 select2 下拉列表中的任何值时,需要在所选 accountId 上运行一个方法。

根据组件上所选的 accountId 显示一些消息。 blade.php 文件如下

<div class="col-md-9 col-12">
    <div wire:ignore>
        <select id="accountId" class="form-control" wire:model="accountId">
            @foreach($accounts as $index => $account)
                <option value="{{$index}}">{{ $account }}</option>
            @endforeach
        </select>
   </div>                             
</div>

以下是启动 select2 的脚本。

$(document).ready(function () {

    $('#accountId').select2().on('change', function (e) {
                    let data = $(this).val();
                    @this.set('accountId', data);
                });
});

如何在我的 Livewire 组件中捕获该数据并在该 accountId 上运行必要的方法。

public function updatedAccountId($accountId)
{
    if ($accountId) {
        $account = Account::findOrFail($accountId);
        $this->accountAlert = 'some message for user to display';
    }
    else {
        $this->accountAlert = '';
    }
}

select2 数据发生更改但 select2 未重新渲染时,会调用该方法。

如何停止重新渲染 select2 或重新渲染 select2 方法?

谢谢

1个回答

尝试使用 Livewire.hook,如下所示:

在此处输入图片描述

也许这个 视频 对您有帮助(葡萄牙语)。

Jader
2021-07-17