【问题标题】:Laravel Livewire emit event not fireLaravel Livewire 发出事件未触发
【发布时间】:2021-07-21 03:43:57
【问题描述】:

我正在使用 Laravel 8、Livewire 2.x 我正在尝试使用发出事件,只是在我的 Livewire 组件中创建了一个简单的按钮

<button class="" wire:click="callme()">click me</button>

我的组件控制器

    public function callme()
    {
        $this->emitTo('Components.CustomizeModal', 'callFn');
    }

组件/CustomizeModal 控制器

    protected $listeners = [
        'callFn' => 'whatever'
    ];

    public function whatever()
    {
        dd("OK");
    }

它被解雇了,响应是

{
    "effects": {
        "html": null,
        "emits": [
            {
                "event": "callFn",
                "params": [],
                "to": "Components.CustomizeModal"
            }
        ],
        "dirty": []
    },
    "serverMemo": {
        "checksum": "479fe7f16b16351c610955960c8299f45fd4aeed72d69f9cded044e3bff9a525"
    }
}

它根本没有触发该方法,我也尝试过emit,没有人知道吗?

【问题讨论】:

  • 为什么要将事件发送到 Components.CustomizeModal?我的意思是,如果发出的组件与侦听器的类型相同,则必须使用其组件的名称,在您的情况下为 CustomizeModal。
  • 但是还是不行,即使我用$emit('callFn')
  • 嗯……那一定行得通。 div 容器中是否有组件的刀片代码?
  • 我的原始组件工作正常,我有按钮,它显示正确,并且在我单击时发送 ajax,但监听器没有被触发。让我安装一个新的 Laravel 再试一次,看看有没有运气。我真的不明白它只是一个非常基本的功能,应该在引擎盖中工作。
  • 我尝试安装一个刷新的Laravel,但还是不行!!!

标签: laravel laravel-livewire


【解决方案1】:

或者,您可以尝试直接从按钮发出事件。

<button wire:click="$emitTo('Components.CustomizeModal', 'callFn')">

并确保

Components.CustomizeModal

是合格的livewire组件,在事件发出时也会挂载,否则会失败

【讨论】:

  • 我没有将组件添加到父组件中,是这样的。现在 emit 工作正常,但仍然不能使用 emitTo。
猜你喜欢
  • 2021-01-14
  • 2020-11-15
  • 2021-08-19
  • 2021-07-04
  • 2021-08-17
  • 2021-11-14
  • 2021-12-05
  • 2019-04-30
  • 1970-01-01
相关资源
最近更新 更多