Javascript ng repeat中的角度js性能问题
我想在UI上呈现大量记录,比如说Javascript ng repeat中的角度js性能问题,javascript,angularjs,Javascript,Angularjs,我想在UI上呈现大量记录,比如说8000 我的HTML代码是 <ul id="ul{{group.Id}}"> <li data-ng-repeat="vehicle in group.Vehicles | filter:VehRegNo"> <input type="checkbox" id="checkbox1" data-ng-disabled="IsAllLoading" data-ng-model="vehicle.IsChecked" dat
8000
我的HTML代码是
<ul id="ul{{group.Id}}">
<li data-ng-repeat="vehicle in group.Vehicles | filter:VehRegNo">
<input type="checkbox" id="checkbox1" data-ng-disabled="IsAllLoading" data-ng-model="vehicle.IsChecked" data-ng-change="changeCheck(vehicle)">
</li>
</ul>
在控制器端
group.Vehicles = getDataGradually(items, 0, 50, function() {
$scope.$digest();
}, function() {
$scope.IsAllLoading = false;
$("#cb" + id).toggle();
$("#lbl" + id).toggle();
});
//if i put all items dirctly to vehicles then ui freez
function getDataGradually(data, gap, count, updateCb, finishCb) {
var ret = [];
var handled = 0;
function doInsert() {
var start = handled;
var end;
if (handled + count > data.length) {
end = data.length;
} else {
end = handled + count;
}
for (let i = start; i < end; i++) {
ret[i] = data[i];
}
handled += count;
if (handled < data.length) {
$timeout(function() {
doInsert();
updateCb && updateCb();
}, gap);
} else {
return finishCb && finishCb();
}
}
doInsert();
return ret;
}
group.Vehicles=GetDataProgression(项,0,50,函数(){
$scope.$digest();
},函数(){
$scope.IsAllLoading=false;
$(“#cb”+id).toggle();
$(“#lbl”+id).toggle();
});
//如果我把所有物品直接放到车辆上,那么ui freez
函数getDataProgression(数据、间隙、计数、updateECB、finishCb){
var-ret=[];
var=0;
函数doInsert(){
var开始=已处理;
var端;
如果(已处理+计数>数据长度){
end=data.length;
}否则{
结束=已处理+计数;
}
for(让i=start;i
问题是它花费了大量的时间;有时需要2到3分钟来呈现所有项目。是否有任何建议分页不是客户端的选项,也有一些搜索筛选器。添加
$compileProvider.debugInfoEnabled(false)代码>在应用程序配置中获取更多信息在控制器中预计算筛选列表,以便您可以控制何时重建。在html中,它可能会重新计算每个摘要循环上的列表。如果问题是显示的数据量,您可以在控制台中尝试类似于try out$(“*”).length的方法,这将给你一个好主意,你是否阻塞了你的浏览器太多的DOM元素,或者它归结为每个循环的计算,你可能想考虑<代码>轨道的$ index < /代码>如果这不是你的具体情况的问题。代码>在应用程序配置中获取更多信息在控制器中预计算筛选列表,以便您可以控制何时重建。在html中,它可能会重新计算每个摘要循环上的列表。如果问题是显示的数据量,您可以在控制台中尝试类似于try out$(“*”).length的方法,这将给你一个很好的想法,你是否用太多的DOM元素阻塞浏览器,或者归结为每个循环的计算,如果你的具体情况不是问题,你可能想用$index <代码>考虑<代码>轨道。