Angularjs 每次鼠标滚动时都会调用ngInfiniteScroll-loadMore()方法 下面是关于评论的解决方案。
问题:我的loadMore()方法在每个容器的滚动上执行 意思是:在父容器的每个鼠标滚动上执行loadMore()(Angularjs 每次鼠标滚动时都会调用ngInfiniteScroll-loadMore()方法 下面是关于评论的解决方案。,angularjs,nginfinitescroll,Angularjs,Nginfinitescroll,问题:我的loadMore()方法在每个容器的滚动上执行 意思是:在父容器的每个鼠标滚动上执行loadMore()(infinite scroll parent=“true”) 所需结果:要获取loadMore(),请仅在InfiniteSrollDistance满足其条件时执行,而不是执行任何微小的滚动 我的代码深受&的启发 我的应用程序是一个照片库。 我通过ajax调用加载照片,并将它们填充到缩略图指示转发器中。 我在控制器初始化时禁用ng Infinite Scroll,并在回调成功时启用
infinite scroll parent=“true”
)
所需结果:要获取loadMore(),请仅在InfiniteSrollDistance满足其条件时执行,而不是执行任何微小的滚动
我的代码深受&的启发
我的应用程序是一个照片库。
我通过ajax调用加载照片,并将它们填充到缩略图指示转发器中。
我在控制器初始化时禁用ng Infinite Scroll,并在回调成功时启用它
<div class="thumbnails grid__item page--content">
<div id="gallery" class="unstyled-list"
infinite-scroll='loadMore()'
infinite-scroll-disabled='album.busy'
infinite-scroll-parent="true"
infinite-scroll-immediate-check="false"
infinite-scroll-distance='2'>
<my-photo-directive ng-repeat="photo in photos"></my-photo-directive>
</div>
</div>
我的缩略图指令是相同的。毫不奇怪,当最后一张照片填充到中继器上时,我启用了该组件
app.directive 'myPhotoDirective', ['$window', ($window) ->
return {} =
....
link: (scope, element, attrs) ->
if scope.$last
scope.album.busy = false
我不知道我错过了什么或做错了什么。
我希望有人会来帮助我
谢谢。如果不想查看实际代码,我将直接向您介绍ngInfiniteScroll常见问题解答: 为什么ngInfiniteScroll会在每一个屏幕上触发我的表情 滚动事件? infiniteScroll指令使用其所在元素的高度 附加到,以确定离底部的距离 是窗户。在某些情况下,浏览器可以报告高度为0, 这导致了这种行为。通常,这是由于一个容器 只包含浮动子元素的元素。最简单的修复方法 这个问题是要添加一个“间隔”元素的底部 容器(类似于
)
;更多细节
我已经解决了我的问题。
NIS(NGNIMITITCHOLL)度量的基础属性之一是<代码> $容器< /代码>和<代码> $ELEM
$container
是滚动元素的父元素$elem
是包含滚动元素的元素
NIS试图做的是,在每次鼠标滚动时(如果启用),计算这两个元素之间的关系,并检查$elem
是否高于$container
,然后向下滚动。(它还检查其他属性,如-距离、立即检查和禁用)
因此,这两个基本元素之间的关系对于理解和调试NIS至关重要
所以我的问题就是-$container和$elem在高度上是相等的。我在这两个元素上都有固定的css高度值(100%)(主要是因为我在文档中读到我必须通过高度),并且错误地修复了
$elem
,这是完全错误的
其次-
无限滚动距离也会导致这种情况发生。
如果您正在设置的值很高(比如说2),并且您的loadMore()
方法没有填充足够的项,即使您禁用该方法的运行时,您将得到无限的loadMore()
执行。让我加上我的两分钱,有完全相同的问题,不同的解决方案!我一整天都在调试无限卷轴。有一次,我意识到javascript报告$(窗口).height()==$(文档).height()
,这毫无意义
我在谷歌上搜索了一下,当您缺少DOCTYPE时就会出现这种情况:
但是,这还不够!我的DOCTYPE曾一度被浏览器吃掉。您可以进一步阅读:我也有类似的问题,只是当我到达容器末尾时,infinite scroll甚至不会停止加载(我使用了v1.2中的infinite scroll容器选项)。经过长时间的调试,我注意到容器高度是float(例如634.245px),而内部元素高度接近它,但int(例如635px)和它会反复触发循环,因为它认为已经达到了底部限制。ng infinite scroll的问题在于它的可视性和不处理实际数据,因此我必须检查从后端返回的数据,并在结果为空时阻止它(infinite scroll禁用了相关函数)。我发现html格式应该与此类似,以便nginfinitescroll工作。增加了一个固定高度的虚拟外部div解决了我的问题
<div style="height:500px;">
<div infinite-scroll="myPagingFunction()">
<div ng-repeat="x in images"></div>
</div>
</div>
希望它能帮助到别人。这似乎很明显,但我有一天没有注意到
我遵循了图中所示的示例:
需要注意的重要部分是滚动距离:
infinite-scroll-distance="3"
根据,
如果浏览器窗口的高度为1000像素,且“无限滚动距离”设置为2,则当元素底部在浏览器窗口底部2000像素范围内时,将计算无限滚动表达式。默认值为0(例如,当元素底部穿过浏览器窗口底部时,将计算表达式)
在我的开发过程中,我只有约50个项目显示,并认为,尽管不正确,NIS是无限发射。事实上,它只是想填满4000像素
TL;DR:如果设置了无限滚动距离,请删除(或至少减少)无限滚动距离。花大量时间来解决这个问题。对我来说,无限卷轴的方法被称为无限卷轴,所以我做了一些研究&得出结论,这是因为我的代码中无限卷轴的“div”的高度是0,根本没有增加,所以它一直认为用户在页面的末尾。因此,我的解决方案是在无限卷轴的“div”的下一个元素中添加一个“clearfix”html类。如果你能在plunker中重新创建它,这样我们就可以看到错误所在。它有点复杂。。。。。这是一个应用程序下的开发,我还不能公开它。。。这是整个应用程序,可能是
<div style="height:500px;">
<div infinite-scroll="myPagingFunction()">
<div ng-repeat="x in images"></div>
</div>
</div>
infinite-scroll-distance="3"