应用程序在追加数据时卡住
app stucks when appends data
我有一个移动应用程序。我用的是Angular和Ionic,这个应用的理念是让feed带有帖子。当用户达到提要的70%(例如)时,我向视图添加新的帖子。我从一开始就有5个帖子,每次附加5个帖子。即使在添加了前5个帖子之后,应用程序也会卡在半秒内。如果我快速滚动,当我达到70%,滚动突然停止,应用程序卡住了0.5秒,然后我可以再次滚动。
我是这样实现这个功能的:
<div>
<div ng-repeat="post in posts">
<div ng-include src="'js/post/post.html'"></div>
</div>
</div>
<ion-infinite-scroll immediate-check="false" on-infinite="appendPosts()" distance="30%"></ion-infinite-scroll>
控制器$scope.appendPosts = function() {
$scope.postsFeedPage = $scope.postsFeedPage + 1;
Home.loadPosts($scope.postsFeedPage);
};
$scope.$watch(function(){
return Home.getPosts();
}, function () {
$scope.posts = Home.getPosts();
});
var posts = [];
this.getPosts = function() {
return posts;
};
this.loadPosts = function(page) {
return $http({
url: Server.url + '/api/posts',
method: 'GET',
params: {page: page, token: $rootScope.user.authentication_token }
}).success(function (data) {
posts = posts.concat(JSON.parse(data.posts));
});
};
知道是什么问题,我怎么能解决这个问题吗?如果问题出在Angular的性能上,也许我应该用RequireJS来优化渲染过程?
你有一个性能问题,有一些解决方案你可以尝试:
-
一次性绑定:一次性绑定提高性能,但在无限滚动的情况下,我没有测试这是否有效/更好。试试下面的代码:
<div ng-repeat="post in ::posts"> <div ng-include src="'js/::post/::post.html'"></div> </div>
-
按方法跟踪:按方法跟踪使用唯一标识符,这可以提高性能。试试这个:
<div ng-repeat="post in posts track by post.id"> <div ng-include src="'js/post/post.html'"></div> </div>
-
Collection-repeat: Ionic制定了一个指令,允许应用程序比ng-repeat更高效地显示庞大的项目列表。(编辑:这是这种情况下的解决方案)。
<div collection-repeat="post in posts"> <div ng-include src="'js/post/post.html'"></div> </div>
相关文章:
- 如何在 js / jquery 中绑定“数据追加”事件
- 将 json 数据追加到 HTML 列表框
- 正在将数据追加到<tfoot>部分
- 将数据追加到所有 Socket.io 客户端发射器
- 将数据追加到本地存储对象
- 如何在将数据追加到其中之前停止查看
- JQuery if 语句基于在文本中包含特定字符串将数据追加到相应的 DIV
- 如何将 json 类型数据追加到新的表单数据
- 将更多数据追加到现有数据中
- 将 XML 数据追加到列表视图 JQuery Mobile
- 将 JSON 数据追加到自定义 JQuery 函数中
- 将 html 数据与内联脚本 html 数据追加并打印
- 正在将数据追加到已存在的AudioBuffer对象
- 如何使用Javascript数据从jsp servlet数据追加
- 如何向存储在元素中的自定义数据追加值
- 通过Ajax将数据追加到表中
- 根据对象名称将返回的数据追加到不同的元素
- AJAX-等待数据追加,然后循环下一个
- JQUERY将数据追加到同级数据之前
- 如何让jQuery.load()将返回的数据追加到容器中,而不是重写