如果页面没有滚动,如何获得更多项目

雷拉

我通过无限滚动调用更多项目,但是如果最初加载的项目没有填满屏幕,它将失败,我的意思是在这种情况下:

document.body.scrollHeight == document.body.clientHeight

如果页面具有滚动条,则该指令可以正常工作:

app.directive('infinitescroll', function ($rootScope, $http, $window) {
  return function ($scope, $element) {

    angular.element($window).bind('scroll', function() {
      // 100 pixels gap at the bottom of page for triggering the fetcher 
      clientHeight = html.scrollHeight - 100; 
      scrollHeight = html.scrollTop + document.querySelector('body').clientHeight;
      if (clientHeight <= scrollHeight) {
        fetcher ();
      }
    }); 

    function fetcher () {
      //get the Id of last item >> lastId
      $http.get(app.apiBaseUrl + '/items/' + lastId).then(function (response) {
         // now pushing new items to $scope
      });
    }
  }
});

我可以检查控制器是否

document.body.scrollHeight >= document.body.clientHeight

否则需要更多的项目,但是在控制器中检查scrollheight是一个不好的做法,请告诉我如何在上述指令中进行检查。

纳雷克·马米孔扬(Narek Mamikonyan)

我想建议为提取程序创建Service,并将其注入指令中。您的提取程序可以具有一个函数,您可以在其中传递id,它会向后端发出请求并返回响应,然后可以将其注入到指令(关于指令)中:您可以创建一个限制为A的指令并将其设置为body属性像这样:

<body infinitescroll>

这样,您将拥有element已包装在jQuery中的in指令,并且document.querySelector('body')在计算后无需这样做,您可以从服务器获取数据并将其发送到您需要的控制器,方法是通过$emit$boradcast

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何告诉itemBuilder Flutter中没有更多项目了?

加载更多项目没有出现(Vue JS)

响应自动滚动加载更多项目

滚动以在android列表视图中添加更多项目

如何知道元素在屏幕上是否可见。如果没有,请滚动页面

如何使用Node js中的puppeteer滚动页面5分钟(如果之前没有完成,则滚动时间更短)?

GetElementby更多项目

如何从javascript中具有2个或更多项目的值中获取数据

AJAX:如果没有更多结果,如何清除间隔

如果 api 中没有更多信息,如何删除按钮

向用户指示列表中还有更多项目

jQuery水平滚动隐藏箭头(如果没有更多元素)

加载更多项目后自动向上滚动(无限滚动)

如果网站有加载更多按钮以在页面上加载更多内容,如何抓取网站?

没有获得垂直滚动

列表框:如何垂直滚动带有列的许多项目?

如何在页面底部添加更多滚动

如何使用mongoDB shell从文档中获取更多项目?

如何在拍打身体中添加更多项目

ngFor创建更多项目

QListWidget 显示更多项目

使用 Retrofit 滚动到 RecyclerView 底部时添加更多项目

Android 分页库在无限滚动时何时请求更多项目

如何在没有滚动条的情况下在所有页面上创建带有项目的 <div>?

如何获得过滤列表中的许多项目?

当父母没有更多的成长空间时如何使孩子滚动

如何获得页面滚动位置(y轴)

类返回列表中只有 1 个项目而不是更多项目

如何在“没有名为xyz的模块”错误中获得更多诊断输出?