我想从父组件调用子组件的公共方法
//parent.php
class Parent extends Component
{
public function render()
{
return view('livewire.parent');
}
}
//child.php
class Child extends Component
{
public function render()
{
return view('livewire.child');
}
public function childMethod()
{
// Done somethings here
}
}
现在,当在父blade视图中,我尝试调用子组件方法,如下所示
//parent.blade.php
<button wire:click="childMethod"></button>
然后得到错误
Livewire:无法调用组件方法。公共方法[childMethod][parent]
您需要在child.php中放置:
//child.php
protected $listeners = ['parentIsCalling' => 'childMethod'];
在叶片视图中应该是:
//parent.blade.php
<button wire:click="$emit('parentIsCalling')"></button>
因为首先你的wire:click函数没有$emit函数只局限于它自己的Livewire实例的作用域。
其次,你的父类不监听或打开接收来自任何其他LiveWire实例的输入。