2016-03-15 4 views
5

Я сейчас разрабатываю ионное приложение и успешно реализовал бесконечную функцию прокрутки. Он отлично работает на настольных браузерах и более новых устройствах для Android, однако у меня проблемы с телефонами, на которых установлена ​​версия Android версии 4.1 или меньше.Ионный бесконечный свиток не работает на всех устройствах Android.

Проблема:

Я открываю страницу, он загружает и отображает первые 20 пунктов просто отлично, я перейдите к нижней части, следующей загрузке 20 пунктов, но это не дает мне прокручивать любого далее, чтобы увидеть следующие 20 предметов.

Вот GIF, показывающий, как он выглядит на моем рабочем столе (как он должен работать). desktop gif

Вот еще один GIF, показывающий, как это выглядит на моем XPERIA телефона (обратите внимание, как она не позволяет мне прокрутить далее вновь загруженных элементов). xperia gif

Однако, когда я обновить страницу или превратить телефон в ландшафтном режиме после следующих 20 элементов, загруженных, скроллинг работает просто отлично, так что кажется, что телефон не знает, что высота экрана изменяется при новые предметы загружены, поэтому я подумал, что могу исправить это, просто добавив $ionicScrollDelegate.resize();, чтобы рассказать, чтобы пересчитать размер его контейнера, но это, похоже, не исправляет его.

Вот мой код JavaScript:

.controller('TestCtrl', ['$scope', '$http', function($scope, $http) { 
    $scope.items = []; 
    $scope.page = 1; 
    $scope.totalPages = 1; 


    $scope.loadMore = function() { 
    if ($scope.page <= $scope.totalPages) { 
     $http.get('http://localhost/test/recent/' + $scope.page).success(function(items) { 
     var i = items.data.length; 
     $scope.totalPages = items.pages; 
     $scope.items = $scope.items.concat(items.data); 

     $scope.$broadcast('scroll.infiniteScrollComplete'); 

     $scope.page = $scope.page + 1; 
     if ($scope.page == $scope.totalPages + 1) { 
      $scope.noMoreItemsAvailable = true; 
     } 
     }); 
    } 
    } 
}]) 

HTML:

<ion-view view-title="Hello Stackoverflow"> 
    <ion-content> 

    <a class="item" ng-repeat="item in items"> 
     {{item.title}} 
     <span class="item-note"> 
      {{ item.timestamp | myDate }} 
     </span> 
    </a> 

    <ion-infinite-scroll ng-if="!noMoreItemsAvailable" on-infinite="loadMore()" distance="10%"></ion-infinite-scroll> 
    </ion-content> 
</ion-view> 

Я застрял с этой проблемой for2 дней, гуглом в течение нескольких часов и попробовал много разных вещей, но я не мог найти ничего, что фиксировало бы это.

+0

Я сообщил об этом здесь: https://github.com/driftycoion/issues/9443 –

ответ

1

Использовать collection-repeat вместо ng-repeat. Это не похоже на то, что Ionic с ng-repeat освежает вид.

+0

thankx это работает для меня .. но можете ли вы сказать мне, что я должен использовать, если у меня нет ретранслятора, но имеют только форму, охватывающую вертикальное пространство и нуждающуюся в прокрутке. – Rakeshyadvanshi

1

Я нашел обходной путь ... Изменить от этого

<ion-content> 

в

<ion-content overflow-scroll='false'> 

отключить родную прокрутку в данном представлении.

+0

У меня была проблема, когда функция бесконечного действия не вызывалась на устройстве, как раз в браузере рабочего стола. У меня также был освежитель ионов в том же виде. Я применил ваше исправление, и теперь он работает, спасибо! –