ион-бесконечный свиток терпит неудачу с ионным

0

Я получаю данные от веб-службы и должен получать каждый раз, когда вы пытаетесь обновить, поэтому последний идентификатор загружается со спины. Это отлично работает для меня, проблема в ионном свитке. Я видел, что если вас не сопровождает ng-if бесконечное время загрузки информации довольно неудобно. Если есть определенная величина заряда, если плата, в противном случае ничего не взимать, и именно там я установил значение для моей переменной ng-if. Но как только истинное seteo больше не загружает мой свиток.

HTML

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

JS

$scope.refreshView = function () {
    if (!navigator.onLine) {
        $scope.hide();
        $ionicPopup.show({
            title: 'Notificación',
            subTitle: '',
            content: 'No tienes conexión a internet.',
            buttons: [{
                text: 'Aceptar',
                type: 'button-positive',
            }, ]
        })
    } else {
        console.log($scope.ultima_id);
        if (typeof $scope.ultima_id == "undefined" || $scope.ultima_id == "") {

        } else {
            console.log(UrlService.url + 'refreshView/' + sessionService.get("user_id") + '/' + sessionService.get("hash") + "/" + $scope.ultima_id);
            $http({
                    method: 'GET',
                    url: UrlService.url + 'refreshView/' + sessionService.get("user_id") + '/' + sessionService.get("hash") + "/" + $scope.ultima_id
                })
                .success(function (data) {
                    console.log("Refresh " + data);
                    if (data.Count > 0) {
                        $scope.viewsDespeglables = true;
                        angular.forEach(data.View, function (value, key) {
                            if (data.Count - 1 == key) {
                                $scope.ultima_id = value.id;
                            }
                            $scope.views.push(value);
                        });
                    } else {
                        console.log(data);
                        $scope.noMoreItemsAvailable = true;
                    }
                })
                .error(function () {})
                .finally(function () {
                    $scope.$broadcast('scroll.infiniteScrollComplete');
                });
        }
    }
}

$scope.loadMore = function () {
    $scope.refreshView();
    $scope.$broadcast('scroll.infiniteScrollComplete');
    $scope.$broadcast('scroll.resize');
};
Теги:
ionic-framework
scroll

1 ответ

1

Почему бы не использовать повтор коллекции? Что такое повторение коллекции? : Из ионных документов: "collection-repeat" позволяет приложению показывать огромные списки элементов гораздо более результативно, чем ng-repeat.

Он отображает в DOM только столько элементов, сколько в настоящее время видимо.

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

Основы:

Данные, данные для повторения коллекции, должны быть массивом. Если атрибуты item-height и item-width не указаны, предполагается, что каждый элемент в списке имеет те же размеры, что и первый элемент. Не используйте угловую однократную привязку (: :) с повторением коллекции. Объем каждого элемента присваивается новым данным и повторно переваривается по мере прокрутки. Привязки должны обновляться, а одноразовые привязки не будут. "

Код:

<body ng-controller="MainCtrl as main">
  <ion-header-bar class="bar-positive">
    <h1 class="title">1000 Items</h1>
  </ion-header-bar>
  <ion-content>
    <ion-list>
      <ion-item collection-repeat="item in main.items">
        {{item}}
      </ion-item>
    </ion-list>
  </ion-content>
</body>

var myApp = angular.module('myApp', ['ionic']);

myApp.controller('MainCtrl', function() {
  this.items = [];
  for (var i = 0; i < 1000; i++) this.items.push(i);
});
  • 0
    Зачем мне это делать, когда выходит из строя и определенный объем данных.
  • 0
    хорошо вы используете ng-if, который создает dom на основе переменной. Повторение коллекции также создает dom, но только благодаря тому, что является жизнеспособным, я думал, что использование повторения коллекции вместе с бесконечной прокруткой решит вашу проблему времени загрузки.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню