下面的评论解决方案。
问题:我的 loadMore() 方法在每个容器的滚动条上执行。
含义: loadMore() 在父容器的每个鼠标滚动上执行 ( infinite-scroll-parent="true"
)
期望的结果:只有在infiniteScrollDistance满足其条件时才执行loadMore(),而不是我做的任何微小的滚动。
我的代码深受demo_basic和demo_async的启发。
我的应用程序是一个照片库。我通过 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>
我的咖啡代码没有任何意外。它的逻辑不重要,因为如果我放置一个简单的console.log,问题仍然存在......
$scope.album.busy = true
$scope.loadMore = ->
$scope.$apply ->
$scope.album.busy = true
console.log('loadMore() been executed here')
我的缩略图指令是相同的。毫不奇怪,当最后一张照片被填充到中继器上时,我启用了该组件。
app.directive 'myPhotoDirective', ['$window', ($window) ->
return {} =
....
link: (scope, element, attrs) ->
if scope.$last
scope.album.busy = false
我不知道我错过了什么或做错了什么。我希望有人会在这里帮助我。
谢谢你。