我在我的组件中有一个下拉列表,它似乎导致了Livewire中的错误。
Uncaught(in promise)DOMException:无法在“元素”上执行“setAttribute”:“?”不是有效的属性名称。
我根据我在疑难解答部分的文档中读到的内容添加了wire:key
代码,但似乎没有帮助。它在保存时更新了值,但是当它用新数据刷新dom时,它不工作了。
以下是违规元素:
<div class="mb-3 col-md-4 ">
<label for="state" class="form-label">State</label>
<select wire:model.defer="location.state" class="form-select"
id="state" name="state">
@foreach ($states as $state)
<option
name="{{ $state->name }}"
id="{{ $state->code }}"
wire:key="{{ $state->id }}"
value="{{ $state->code }}"
@if (isset($location->state)
&& $location->state === $state->code) ? selected @endif
>{{ $state->name }}
</option>
@endforeach
</select>
</div>
字符串
2条答案
按热度按时间wgeznvg71#
你这里有个错字
字符串
它尝试将
?
作为元素的属性,但?
不是有效的属性。只需删除?
。也就是说,您不能在Livewire中的
<select>
元素上使用selected
属性来设置所选值。您需要在组件中设置wire:model
的值。这意味着您必须从Blade中完全删除@if(..) selected @endif
,并在组件中设置该值,型
tf7tbtn22#
我也遇到过同样的错误--就我而言,它是通过在一个经过身份验证的上下文中调用livewire组件来解决的--它失败是因为它正在调用login(作为从一个guest上下文调用的结果)。
如果它不为你工作,请忽略,但它整理了我。