开发者问题收集

Livewire 魔法动作不起作用未捕获的 ReferenceError:$event 未定义

2021-07-08
1164
<div class="row">
    <div class="col">
        <div class="container">
            <div class="card">
                <div class="card-body">
                    <div class="row">
                        <div class="col">
                            <div class="mb-5">
                                <label class="form-label">Order: </label>
                                <select wire:change="selectOrder($event.target.value)">
                                    @foreach($orders as $option)
                                        <option value="{{$option['id']}}">{{$option['id']}}</option>
                                    @endforeach
                                </select>
                            </div>

                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>
public function selectOrder($order)
{
    $this->order = $order;
    $this->products = $this->order->products;
}

在此处输入图片描述

这里有一个带有选择输入的 live wire 组件,当更改选择时,我需要使用选定的值执行函数 selectOrder ,我使用 $event 魔术动作,但出现以下错误。

1个回答

$event 是 Alpine.js 的魔法属性。 因此,解决这个问题的一种方法是使用 Alpine.js 事件监听器,调用 Livewire 方法。

<select x-on:change="$wire.selectOrder($event.target.value)">

也就是说,您可以使用 Livewire 类中的属性,并将选择绑定到模型,

<select wire:model="orderValue">

然后在组件中监听该变化。

public $orderValue;

// ...

public function updated($field, $value)
{
    if ($field === 'orderValue') {
        $this->selectOrder($value);
    }
}
Qirel
2021-07-08