ng-在 Angularjs 中重复 当$scope变化时

ng-repeat in angularjs when $scope change

本文关键字:scope 变化 Angularjs ng-      更新时间:2023-09-26

首先,我从服务器获取数据并设置为$scope.data,并通过ng-repeat使用它显示在表中。然后我继续从服务器获取数据,然后与旧$scope.data$scope.data=$scope.data.concat(newdata))连接=> Broswer将绘制一些新数据行。

但我不知道旧数据(例如$scope.data[0],不是更改值)是否会重新绘制?你能告诉我吗?

为了避免"重新绘制",您必须使用"跟踪方式"

https://docs.angularjs.org/api/ng/directive/ngRepeat

为了尽量减少 DOM 元素的创建,ngRepeat 使用一个函数来"跟踪"集合中的所有项及其相应的 DOM 元素。例如,如果将一个项添加到集合中,ngRepeat 将知道所有其他项已经具有 DOM 元素,并且不会重新呈现它们。

例:

<div ng-repeat="n in [42, 42, 43, 43] track by $index">
 {{n}}
</div>

如果使用对象,则可以使用字段(没有重复值)作为跟踪器

<div ng-repeat="model in collection track by model.id">
  {{model.name}}
</div>

你必须推动你的数组

$scope.data.push.apply($scope.data,newdata);   

请检查此代码以供参考

$scope.moreResultsBoats = function() {  
            $scope.pagIndex = $scope.pagIndex + 1;                                 
            Boat.query({pagIndex: $scope.pagIndex}, 
                function success(result) {
                    console.log('Ejecuting callback. Result:' + result);
                    $scope.boats.push.apply($scope.boats, result);      
                }
            );                              
        };

$scope.data[0]数据不会更改,因为您正在使用concat以前的数据,这些数据将保持相同的位置,之后将添加新数据

注意:新的数据类型应该相同,然后它可以正常工作。

例如:

$scope.data = [1,2,3]
newdata = [4,5,5];
$scope.data=$scope.data.concat(newdata);

输出

[1,2,3,4,5,5]