Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ng repeat中的角度js性能问题_Javascript_Angularjs - Fatal编程技术网

Javascript ng repeat中的角度js性能问题

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

我想在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" 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 <代码>考虑<代码>轨道。