【问题标题】:Infinite Scroll jQuery & Laravel 5 Paginate无限滚动 jQuery 和 Laravel 5 分页
【发布时间】:2016-01-18 05:40:13
【问题描述】:

我已成功从 Controller 返回数据

public function index()
 {
    $posts = Post::with('status' == 'verified)
                      ->paginate(30);

    return view ('show')->with(compact('posts'));
 }

另外,我成功地在我的视图中显示了所有内容:

 <div id="content" class="col-md-10">
    @foreach (array_chunk($posts->all(), 3) as $row)
        <div class="post row">
            @foreach($row as $post)
                <div class="item col-md-4">
                    <!-- SHOW POST -->
                </div>
            @endforeach
        </div>
    @endforeach
    {!! $posts->render() !!}
 </div>

到目前为止,一切都运行良好。

但是,我根本没有得到官方文档。什么是“div.navigation”和“#content div.post”?我的情况应该是什么?

来自文档的片段:

$('#content').infinitescroll({

   navSelector  : "div.navigation",            
                   // selector for the paged navigation (it will be ?>hidden)
    nextSelector : "div.navigation a:first",    
                   // selector for the NEXT link (to page 2)
    itemSelector : "#content div.post"          
                   // selector for all items you'll retrieve
});

编辑:我的 Javascript 到目前为止

$(document).ready(function() {
(function() {
     var loading_options = {
        finishedMsg: "<div class='end-msg'>Congratulations! You've reached the end of the internet</div>",
        msgText: "<div class='center'>Loading news items...</div>",
        img: "/assets/img/ajax-loader.gif"
     };

     $('#content').infinitescroll({
         loading: loading_options,
         navSelector: "ul.pagination",
         nextSelector: "ul.navigation a:first",
         itemSelector: "#content div.item"
     });
 });
}); 

[] 部分在页面底部创建,但无限滚动不起作用。此外,我在控制台中没有收到任何日志或错误。

【问题讨论】:

  • 嗯,在 cmets 中描述了这些选择器是什么。 div.navigation 是您的导航(您没有,但您可以像 $posts-&gt;render() 一样输出它)。 itemSelector 是一个项目的选择器(在你的情况下:div.col-md-4。考虑添加另一个类,如post)。
  • 我编辑了我的问题并按照您所说的添加了课程,但是,我仍然无法在我的大脑中连接它们。可以给我看看吗?
  • 在此处查看我的无限滚动插件以进行 L5 分页 stackoverflow.com/questions/31853472/…

标签: javascript jquery html laravel infinite-scroll


【解决方案1】:

首先你需要在关闭#content div 之后像这样添加分页:

{!! $posts->render() !!}

这将输出如下内容:

<ul class="pagination"><li><a>...</a></li>

要覆盖分页演示者,请查看this answer on SO

那么你的配置是这样的:

$(document).ready(function() {
    var loading_options = {
        finishedMsg: "<div class='end-msg'>Congratulations! You've reached the end of the internet</div>",
        msgText: "<div class='center'>Loading news items...</div>",
        img: "/assets/img/ajax-loader.gif"
    };

    $('#content').infinitescroll({
        loading: loading_options,
        navSelector: "ul.pagination",
        nextSelector: "ul.pagination a:first",
        itemSelector: "#content div.item"
    });
}); 

基本上,无限滚动器会为您调用分页链接,因此需要知道所有内容的位置以便将它们放在一起。

【讨论】:

  • 非常感谢您的回答。我有最后一个问题。我应该把class="pagination"放在哪里?我应该改变哪一个?它是否明确必须是ul
  • 您将{!! $posts-&gt;render() !!} 放在#content div 的末尾。您不必将 class="pagination" 放在任何地方,因为它会由 Laravel 函数输出。是的,它必须是 ul,因为这是 render 函数使用的格式。
  • 我很困惑。我知道我只会将{!! $posts-&gt;render() !!} 输出&lt;ul class="pagination"&gt;... 位。那么在class="item" 里面,对吗?然后在这下面,我会添加&lt;/ul&gt;
  • 很抱歉让您感到困惑。不要把它放在你的 foreach 循环中,而是放在外面(另见我编辑的答案)。
  • 我按照您显示的指南进行操作,但无法正常工作。我编辑了问题并添加了我的 javascript 代码。你能看看吗?提前非常感谢
猜你喜欢
  • 2016-01-18
  • 2016-10-23
  • 2016-12-29
  • 2015-10-29
  • 2016-06-26
  • 2016-11-25
  • 2014-08-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多