Недавно я пытался создать мобильное приложение с ионной структурой. И я обнаружил, что список непосредственно ionic очень медленный, когда в нем всего около 30 элементов или более, это очень плохо. Я попробовал метод bindonce в angularjs, чтобы уменьшить количество наблюдателей, но это не очень помогло. Поэтому я попытался использовать функцию бесконечной прокрутки, которая есть у ionic.
Мой шаблон такой:
<view title="'Pet Information'">
<content has-header="true" has-tabs="true" on-infinite-scroll="loadMore">
<list>
<item ng-repeat="pet in pets" type="item-text-wrap" href="#/tab/pet/{{pet.id}}">
<h3>{{pet.title}}</h3>
<p>{{pet.description}}</p>
</item>
</item>
</list>
</content>
</view>
И мой контроллер
.controller('PetIndexCtrl', function($scope, PetService) {
$scope.pets_all = PetService.all();
$scope.pets = [];
// Add just 10 pets at the first time
var count = 0;
for (var i = 0; i < 10; i++) {
$scope.pets.push($scope.pets_all[i]);
count++;
};
$scope.loadMore = function() {
var curr_count = count;
for (var i = curr_count; i < curr_count + 10; i++) {
if (i < $scope.pets_all.length) {
$scope.pets.push($scope.pets_all[i]);
count++;
} else {
return;
}
}
}
})
Моя идея состоит в том, что список будет просто загружать 10 элементов в первый раз, и каждый раз, когда пользователь прокручивает до нижнего края телефона, он вызывает функцию loadMore, которая загружает еще 10 элементов. Но похоже, что функция loadMore только что вызвала один раз, так что все, что у меня есть, это просто список из 20 элементов, в то время как мой массив содержит более 100 элементов.
Может быть, я ошибаюсь или бесконечная прокрутка ionic framework имеет ошибку?