离子滚动性能问题

时间:2016-10-05 05:10:20

标签: javascript android angularjs ionic-framework

我正在开发我有Feed或时间线的应用程序。这是我的ng-repeat代码:

<div ng-repeat="x in feeds" class="fd-feed-card">
    <div class="fd-feed-usr-img">
        <img ng-src="{{x.user.media[0].small}}" class="fd-img fd-img-br border-style">
    </div>

    <div class="ft-16 fd-feed-usr-name">
        <span><b>{{x.user.name}}</b></span><span class="ft-12 fd-feed-created-time plx prm">{{x.feed.createdTimeStamp | readableTime}}</span>
    </div>
    <div ng-style="imgStyle">
        <img ng-src="{{x.feed.media[0].medium}}" class="fd-img objectcover image-blur">
    </div>
    <div ng-if="x.feed.total_comments > 0 || x.feed.total_likes >0">
        <p class="mll"><span on-tap="openCommentModal(x.feed._id, $index, x.feed)" class="prm" ng-if="x.feed.total_comments > 0">{{x.feed.total_comments}} Comment</span><span ng-if="x.feed.total_likes>0" on-tap="openUserModal(x.feed._id)">{{x.feed.total_likes}} Likes</span>
        </p>
    </div>
    <div class="fd-feed-distance">
        <span class="plx prm ft-16">{{x.distance}} <span class="ft-10">mil</span></span>
    </div>
</div>

此处每个Feed都包含用户名,userimage和Feed 400*400px图片。在此之后使用离子无限滚动如下:

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

在我的javascript代码中,我使用一次有5个Feed的分页调用API。这是我的javascript代码:

$scope.getDashboardFeed = function(start) {
    var _start = start || false;
    var params = {}
    params.offset = offset;
    params.limit = limit;
    Posts.getAllFeeds(params).success(function(res) {
            if (_start) {
                $scope.feeds = [];
            }
            if (res.data.length < limit) {
                $scope.noMoreFeedContent = true;
            } else {
                $scope.noMoreFeedContent = false;
            }

            for (var i = 0; i < res.data.length; i++) {
                var markerPos = new google.maps.LatLng(res.data[i].feed.location[0], res.data[i].feed.location[1]);
                var currentLatLng = new google.maps.LatLng(res.data[i].location.location[0], res.data[i].location.location[1])
                var distance = google.maps.geometry.spherical.computeDistanceBetween(markerPos, currentLatLng) * 0.000621371;
                res.data[i].distance = distance.toFixed(2);
                for (var j = 0; j < res.data[i].feed.likes.length; j++) {
                    if (uid == res.data[i].feed.likes[j].user) {
                        res.data[i].isLiked = true;
                        break;
                    } else {
                        res.data[i].isLiked = false;
                    }
                }
                $scope.feeds.push(res.data[i]);

            }

            offset = offset + limit;
            if (_start) {
                $scope.$broadcast('scroll.refreshComplete');
            } else {
                $scope.$broadcast('scroll.infiniteScrollComplete');
            }
        })
        .error(function(err) {

        })
};

我还根据当前位置计算每个Feed的距离。并检查我是否喜欢这个帖子。

现在问题是当Feed加载到25,30时,滚动在我的android中变得迟钝。我还使用了link

中给出的原生滚动

我还阅读了更多博客,例如this

但我没有得到很多帮助。我必须在这里加载1000个Feed,其中每个Feed包含400 * 400px图片。

我也尝试过收集重复。它也没用。

有没有其他方法可以尝试修复我的滚动性能? 有人可以帮我吗?

1 个答案:

答案 0 :(得分:0)

我有同样的问题,特别是在ng-repeat中使用图像时。

查看我的回答here