Как предотвратить многократный запуск ngInfiniteScroll после первоначального запуска?

Я использую ngInfiniteScroll для включения бесконечной прокрутки на моем сайте. Он работает частично так, как ожидалось, когда я прокручиваю страницу вниз, он вызывает метод, который я хочу вызвать, чтобы показать больше сообщений, за исключением того, что он продолжает вызывать сообщения без конца после того, как он срабатывает один раз. Кто-нибудь знает, что может быть причиной этого? Вот как выглядит мой код, где я реализую ngInfiniteScroll, хотя я не знаю, поможет ли этот конкретный код. Я подозреваю, что это сбрасывается кодом в другом файле.

<div style="height: 1px">
<post post-item="item" feed-items="items.feed" feed-name="feedName" ng-repeat="item in items.feed"> </post>
<div ng-if="items.feed.length == 0 && !initialLoad">
<div class="empty-message">Your feed is currently empty, visit the <a href="/#/users">Users</a> page     and find some more people to follow!</div>
</div>
<a infinite-scroll="nextPosts()" infinite-scroll-distance="1" href ng-click="nextPosts()"   class="show-more">Show more </a> 
</div>

person mattman88    schedule 11.11.2014    source источник


Ответы (1)


Пример
Вы можете использовать директиву infinite-scroll-disabled для ngInfiniteScroll, чтобы НЕ загружать данные если вызов уже идет.

E.g.

<div infinite-scroll='loadMore()' infinite-scroll-disabled='busyLoadingData' infinite-scroll-distance='1'>
  <p ng-repeat='item in items'>Some data</p>
</div>

JS:

$scope.busyLoadingData = false;

$scope.loadMore = function () {
  if ($scope.busyLoadingData) return;
  $scope.busyLoadingData = true;

  // $http call to get next set of data
  // on the .success() callback do $scope.busyLoadingData = false;
}
person Nelu    schedule 20.11.2014
comment
Спасибо, я в конце концов разобрался, и это именно то решение, которое я реализовал. Благодарю вас! - person mattman88; 21.11.2014
comment
бесконечное расстояние прокрутки означает что? - person Habibul Hasan; 14.02.2019