Laravel Livewire:传递 Select 输入的选项值 onChange

Laravel Livewire: Passing option value onChange of Select input

我正在尝试将我的 <select> 输入的 <option> 的值传递到我的 livewire 控制器组件并回显该值。

Livewire Blade 查看组件:

{!! Form::select('goals',$goals_plucked,null,[
    'placeholder' => trans('classes.backend.forms.select_goals'),
    'class' => 'custom-select',
    'id' => 'goals',
    'wire:change' => "goals(this.val)",
]) !!}

我的 Livewire 控制器组件中的输出为 null

Livewire 控制器组件

public $goals;

public function goals($goals)
{
    dd($goals);
}

看了一些教程之后。我还尝试使用 'wire:change' => "goals($event.target.value)", ,这给了我一个未定义变量 $event 的错误,显然是因为它没有在主控制器中定义。我不确定我在这里做错了什么。

我正在尝试做的事情: 尝试创建流程,就像 select 国家然后 select 州然后 select 城市.通过活线。在select进入一个国家之前,select州和城市的输入将不可见

只需在前端将 wire:model="variable_name" 给 select。

并且在 livewire 控制器中应该有一个同名的 public 变量。它会在 select 值更改时自动获取值。

下面是同样的例子

 <select class="custom-select border-0 shadow-none" id="enquiry_for" wire:model="enquiry_for">
      <option value="1">Option 1</option>
      <option value="2">Option 2</option>
      <option value="3">Option 3</option>
 </select>

我尝试了下面的代码,它对我来说效果很好。只需确保我使用正常的 html 表单输入并通过 foreach 循环动态添加选项。还使用 mount() 函数获取 select 下拉菜单的值和 ID。

Livewire Blade 查看组件:

<select wire:model="goal" name="goal" class="form-control" required>
    <option value="">
        {!! trans('classes.backend.forms.select_goals') !!}
    </option>
    @foreach ($goals as $goal)
        <option value="{{ $goal->id }}">{{ $goal->goals }}</option>
    @endforeach
</select>

Livewire 控制器组件

public $goals;
public $goal;

public function mount()
{
    $this->goals = Goals::all()->isActive();
}

public function updatedGoal($value)
{
    dd($value);
}