Liveware.emit 无法在全球工作 javascript
Liveware.emit not working in global javascript
我在 liveware blade 文件中有一个 laravel 发射,如下所示:
<script>
document.addEventListener('livewire:load', function () {
setTimeout(()=>{
Livewire.emit('nextSlot');
}, 4000);
});
</script>
这不起作用,它不会在受尊重的 php 文件中发出 nextSlot 函数。
注意,这个 hwoever 确实按预期工作:
<button wire:click="nextSlot">
Next Slot
</button>
为什么我在 <script>
标签内发出的信号不起作用?
我该怎么做才能在 setTimeout 后发出事件?
如果您的 wire:click
有效但 Livewire.emit
无效,这可能是由不同类型引起的。点击是一个特定事件,直接调用相关方法,而emit只调用方法,如果listeners
数组包含它。你有没有把它添加到听众?如果你分享你的组件代码,它应该更容易调试。
您需要在您的组件上为您的客户端事件添加一个事件侦听器:
protected $listeners ['nextSlot'];
以上将侦听引发的 nextSlot
事件,并在您的组件中调用一个名为 nextSlot
的方法。如果您的事件名称和方法不匹配,您需要指定要调用的方法的名称。
protected $listeners = ['nextSlot' => 'methodName'];
另请注意,您的 nextSlot
事件将在 4 秒后触发一次。不确定这是否是您想要的,或者您是否希望每 4 秒触发一次事件。如果您想要后者,请将 setTimeout()
替换为 setInterval()
。
document.addEventListener('livewire:load', function () {
setInterval(() => Livewire.emit('nextSlot'), 4000);
})
我在 liveware blade 文件中有一个 laravel 发射,如下所示:
<script>
document.addEventListener('livewire:load', function () {
setTimeout(()=>{
Livewire.emit('nextSlot');
}, 4000);
});
</script>
这不起作用,它不会在受尊重的 php 文件中发出 nextSlot 函数。
注意,这个 hwoever 确实按预期工作:
<button wire:click="nextSlot">
Next Slot
</button>
为什么我在 <script>
标签内发出的信号不起作用?
我该怎么做才能在 setTimeout 后发出事件?
如果您的 wire:click
有效但 Livewire.emit
无效,这可能是由不同类型引起的。点击是一个特定事件,直接调用相关方法,而emit只调用方法,如果listeners
数组包含它。你有没有把它添加到听众?如果你分享你的组件代码,它应该更容易调试。
您需要在您的组件上为您的客户端事件添加一个事件侦听器:
protected $listeners ['nextSlot'];
以上将侦听引发的 nextSlot
事件,并在您的组件中调用一个名为 nextSlot
的方法。如果您的事件名称和方法不匹配,您需要指定要调用的方法的名称。
protected $listeners = ['nextSlot' => 'methodName'];
另请注意,您的 nextSlot
事件将在 4 秒后触发一次。不确定这是否是您想要的,或者您是否希望每 4 秒触发一次事件。如果您想要后者,请将 setTimeout()
替换为 setInterval()
。
document.addEventListener('livewire:load', function () {
setInterval(() => Livewire.emit('nextSlot'), 4000);
})