最近一天,我尝试使用 ionic 框架构建移动应用程序。而且我发现 ionic 的列表直接在它只有大约 30 个或更多项目时非常慢,非常糟糕。我已经尝试了angularjs 中的 bindonce方法来减少观察者的数量,但这并没有太大帮助。所以我尝试使用离子具有的无限滚动功能。
我的模板是这样的:
<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 多个项目。
也许我错了或离子框架的无限滚动有错误?