【发布时间】:2021-07-13 06:09:41
【问题描述】:
我有一个显示toggle switches 编号的表单。
开关的数量是动态的,基于表中的“权限”。如何绑定这些,以便在单击它们时将数据发送回 livewire?我发现的“非动态”答案是 x-data="{isChecked: @entangle('foo')}" 但如果我有未知数量的项目而不是单个“foo”,这显然不起作用.
我尝试了一种方法 wire:click="update({{ $value->id }})" 但这只会将已单击元素的 id 传回给 livewire,而不是它的状态(打开或关闭) )。
@foreach($permissions as $key => $value)
<div>
<span>
<span>{{ $value->name }}</span>
<span>{{ $value->description }}</span>
</span>
<button type="button"
x-data="{isChecked: {{ $value->allowed ? 1 : 0 }}}"
@click="isChecked = !isChecked"
{# wire:click? doesn't send state #}
wire:click="update"
:class="{'bg-liteblue': isChecked, 'bg-gray-200': !isChecked }"
class="relative..."
role="switch"
:aria-checked="isChecked"
aria-labelledby="availability-label">
<span class="sr-only">Use setting</span>
<span aria-hidden="true"
:class="{'translate-x-5': isChecked, 'translate-x-0': !isChecked }"
class="translate-x-5 transition ease-in-out duration-200"></span>
</button>
</div>
@endforeach
我希望每个切换都在单击时更新数据库(而不是在最终提交中)。如何将状态传递回 livewire 控制器?
【问题讨论】:
标签: laravel-livewire alpine.js