使用laravel 做一个展示大屏项目,后台的数据变化时,如何让前端的页面自动刷新.我想到的办法是使用laravel livewire组件. 具体代码如下:
http/livewire/show.php(控制器代码)
use App\Zdrw;
use App\Djgz;
use App\Shgg;
use App\Sjjb;
class Show extends Component
{
public $zdrws;
public $djgzs;
public $shggs;
public $sjjbs;
public function mount()
{
$this->zdrws = Zdrw::all();
$this->djgzs = Djgz::all();
$this->shggs = Shgg::all();
$this->sjjbs = Sjjb::all();
}
public function render()
{
return view('livewire.show');
}
}
前端页面
views/home.blade.php
//这里按照文档添加了wie:poll
<div wire:poll>
<livewire:show />
</div>
views/livewire/show.blade.php
<table id="table" data-toggle="table" data-pagination="false" data-page-size="8" data-search="false">
<thead>
<tr>
<th data-sortable="true">ID</th>
<th data-sortable="true">任务名称</th>
<th data-sortable="true">牵头科室</th>
<th data-sortable="true">责任人</th>
<th data-sortable="true">完成时限</th>
<th data-sortable="true">工作进度</th>
</tr>
</thead>
<tbody wire:model="zdrws">
@foreach($zdrws as $zdrw)
<tr>
<td>{{$zdrw->id}}</td>
<td>{{$zdrw->name}}</td>
<td>{{$zdrw->department}}</td>
<td>{{$zdrw->person}}</td>
<td>{{$zdrw->finish}}</td>
<td>{{$zdrw->status}}</td>
</tr>
@endforeach
</tbody>
</table>
后台数据变动时,删除\修改\添加, 前端数据都不自动变化,我哪里出问题了,应该怎么解决?请各位高手赐教,非常感谢
你的问题是数据没有实时更新,你已经用了 wire:poll 指令,但是你没有指定轮询的时间间隔,你可以先写一个事件类:
然后,在数据更新的地方触发这个事件:
接下来,修改 Livewire 组件,监听广播的事件并重新获取数据: