Я получаю данные от веб-службы и должен получать каждый раз, когда вы пытаетесь обновить, поэтому последний идентификатор загружается со спины. Это отлично работает для меня, проблема в ионном свитке. Я видел, что если вас не сопровождает 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');
};
Почему бы не использовать повтор коллекции? Что такое повторение коллекции? : Из ионных документов: "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);
});