laravel - Laravel-Infinite 滚动但在加载时随机加载数据而不会重复
问题描述
我在无限滚动加载数据时遇到问题。我想在用户加载页面或刷新页面时随机加载数据,但我的问题是当我使用inRandomOrder(1234)
没有任何顺序的数据加载时,但它在主页面上是静态的。
例如订单就像 1,5,3,2,6,4 并且它从未改变过
但我需要在每次加载和刷新时更改此订单,如果用户刷新页面,现在查看此订单 (5,6,1,3,4,2) 和下一次 (1,5,2,4,6 ,3)
控制器:
$data = Table::where('enabled', 1)->inRandomOrder(2)->paginate(6);
return view('home', ['data' => $data]);
刀:
<div class="row scrolling-pagination">
@foreach ($data as $v)
@include('pages.main.card')
@endforeach
{{ $data->links() }}
</div>
JS:
$('ul.pagination').hide();
$(function() {
$('.scrolling-pagination').jscroll({
loadingHtml: 'Loading...',
autoTrigger: true,
padding: 0,
nextSelector: '.pagination li.active + li a',
contentSelector: 'div.scrolling-pagination',
callback: function() {
$('ul.pagination').remove();
}
});
});
我现在正在使用Jscroll
解决方案
您传递给的参数inRandomOrder()
是种子,因此如果传递静态参数,您将始终获得相同集合的相同结果。您可以使用rand()
生成种子,然后将其保存在会话数据中。尽管如果您想在用户刷新后更改顺序,您必须制定一些机制来重新生成您保存的种子,每次用户刷新站点时。
public function your_view_get_method(Request $request) {
$request->session()->forget('randSeed');
return view('home');
}
public function your_ajax_get_method(Request $request) {
$seed = $request->session()->get('randSeed', rand());
$data = Table::inRadnomOrder($seed)->paginate(6);
$request->session()->put('randSeed', $seed);
return $data;
}
我就是这样做的。
如果你想在每个 AJAX 请求上随机设置一组数据,那么只需删除 remove 参数。
推荐阅读
- c - 如何在 VS Code 中控制源文件
- sql-server - DataTable 不使用 DataAdapter (VB.NET) 更新数据库
- java - 如何在 java 8 中使用流过滤两个列表对象并将值设置为新列表
- kubernetes - 如何在 Kubernetes 中更新 api 版本列表
- c++ - OpenCV convertToD3D11Texture2D 函数导致访问冲突
- windows - 从 Windows Docker 主机连接到 dockerized postgres
- amazon-web-services - CloudFront 上的 IllegalLocationConstraintException(对于 S3)
- jquery - 单击输入时不同字体大小之间的动画
- html - 从 html 单击按钮调用 Nodejs 脚本
- excel - 我可以根据 accdb 表中的值更改 VBA 中的值吗