假设一个名为refreshList
的函数调用REST API来检索包含项目的JSON数组。为什么它会提高ng-repeat性能?
$scope.refreshList = function() {
// assuming getting the response object from REST API (Json) here
$scope.items = response.data.listItems;
}
而在HTML侧的基本NG-重复:
<div ng-repeat="item in items track by item.id">
然后,我添加了一个onPullToRefresh
功能,通过this directive触发,旨在引发整个列表的刷新。
$scope.onPullToRefresh = function() {
$scope.items = [];
$scope.refreshList();
}
它的HTML是:
<ion-refresher on-refresh="onPullToRefresh()">
</ion-refresher>
的问题是,一些拉来刷新(在滚动时顶部)可以随机崩溃的应用程序...
因此,我决定改变$scope.onPullToRefresh
功能是这样的:
$scope.onPullToRefresh = function() {
//$scope.items = []; commenting this line, causing the potential memory leak and the crash of the app
$scope.refreshList();
}
安装此更新,应用程序崩溃,从不任何更多的在我的iOS设备:)
但是,我不知道保持行清空数组主要区别是什么。
它是否直接影响ng-repeat指令,导致一些混乱,因为REST API的承诺会立即重新指定内容?
的确,在应用此修复之前,Xcode IDE(自cordova应用以来)指出了此错误:EXC_BAD_ACCESS
。
这种行为可能是什么原因?
我在指出Ionic(我正在使用的框架)已经完全使用Angular 1.2.17进行了测试,所以我使用了这个版本。
当你的控制台崩溃时,你是否收到错误信息? (您可以使用Safari或Chrome进行远程调试)。另外,当你设置为'[]'时,你不是“清空数组”,而是创建一个空的新数组并将其分配给一个变量。这可能是问题的一部分。 – TheSharpieOne 2014-09-24 18:10:44
控制台没有错误。它在桌面上工作良好,但在iOS上失败。 – Mik378 2014-09-27 20:44:09