Alpine.js多值条件判断(类inArray)实现问题求助
解决方案
问题出在数组包含判断的语法错误,Alpine.js基于JavaScript,需用Array.includes()方法检查数组是否包含指定值,而非PHP的in_array逻辑。
修改Livewire组件中label的:class绑定即可:
原错误代码:
:class="{{ $item->id }} in selected ? 'bg-green-100' : 'bg-white'"
替换为(若$item->id为数字类型):
:class="selected.includes({{ $item->id }}) ? 'bg-green-100' : 'bg-white'"
若$item->id是字符串类型(如UUID),需给ID添加引号:
:class="selected.includes('{{ $item->id }}') ? 'bg-green-100' : 'bg-white'"
修改后的完整label代码:
<label for="selected.{{ $item->id }}" :class="selected.includes({{ $item->id }}) ? 'bg-green-100' : 'bg-white'" class="p-2 cursor-pointer hover:bg-blue-100 flex justify-between items-center">
原理说明:
selected是通过@entangle与Livewire同步的数组变量Array.includes()是JavaScript原生方法,用于判断数组是否包含指定元素,返回布尔值- 当checkbox选中时,对应ID会加入
selected数组,includes()返回true,触发bg-green-100类;未选中时返回false,应用bg-white类
内容的提问来源于stack exchange,提问作者Raden Bagus
相关产品推荐
相关产品推荐

