当$ scope更改

时间:2016-03-18 07:41:09

标签: javascript angularjs

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

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

3 个答案:

答案 0 :(得分:0)

避免重新绘制'你必须使用'跟踪'

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

  

为了最大限度地减少DOM元素的创建,ngRepeat使用一个函数来“跟踪”#34;集合中的所有项目及其相应的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>

答案 1 :(得分:0)

你必须推动阵列

$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);      
                }
            );                              
        };

答案 2 :(得分:0)

$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]