Angularjs 使用轮询数据提供程序重复

Angularjs 使用轮询数据提供程序重复,angularjs,watch,ng-repeat,Angularjs,Watch,Ng Repeat,我现在正在读有关角的书 假设ng repeat绑定生效,子记录显示为元素,位于下面 现在,假设轮询数据提供程序每隔60秒将新对象推送到模型中的监视的数组(使用监视集合)上(即,数组中的现有数据不会更改) 当Angular检测到阵列具有附加元素时,它会将新的对应元素附加到还是完全重新创建 编辑:@Blackhole问,“为什么要问…?”,所以我将用一个更复杂的假设来详细说明,这个假设与我的实际应用程序非常匹配,我正在考虑重写它来学习 想象一下,您必须获取一列非常长的货运列车的舱单,并向用户显示每辆

我现在正在读有关角的书

假设
ng repeat
绑定生效,子记录显示为
  • 元素,位于
    下面

    现在,假设轮询数据提供程序每隔60秒将新对象推送到模型中的
    监视的
    数组(使用
    监视集合
    )上(即,数组中的现有数据不会更改)

    当Angular检测到阵列具有附加元素时,它会将新的对应元素
  • 附加到
    还是完全重新创建

    编辑:@Blackhole问,“为什么要问…?”,所以我将用一个更复杂的假设来详细说明,这个假设与我的实际应用程序非常匹配,我正在考虑重写它来学习


    想象一下,您必须获取一列非常长的货运列车的舱单,并向用户显示每辆货车的内容。您不希望用户等待再等待,然后突然看到整个货运列车清单。相反,您要求服务器提供一个汽车ID列表,并依次获取每辆汽车的清单,然后在
    success
    回调中,从数组中弹出另一个CarId,并获取下一辆汽车的清单,直到汽车ID数组为空。在获取下一辆汽车的清单时,您希望UI立即将当前汽车的清单添加到页面中

    经过快速测试后,我可以确认将新项推送到绑定数组时,不会重新创建以前的DOM元素

    为了证明这一点,我创建了一个简单数组并将其绑定到一个ng repeat,然后创建了一个Jquery方法来更改DOM元素,请注意,当您将新元素推送到数组(使用角度)时,使用Jquery方法更改的元素:

    app.controller('MainCtrl', function($scope) {
      $scope.items = [];
    
      $scope.pushItems = function(){
        var newItem = {description: 'Item description ' + $scope.items.length};
        $scope.items.push(newItem);
      }
    
      $scope.newArray = function(){
        var newArray = [{description: 'First item of new array'}]
        $scope.items = newArray;
      }
    
      $scope.reassign = function(){
        var newArray = angular.copy($scope.items);
        $scope.items = newArray;
      }
    
    });
    
    $( document ).ready(function() {
        $("#domchanger").click(function(){
          $(".mylist li").html('changed');
        });
    });
    

    下面是演示的plunkr:

    完全重新创建(如果我没记错的话)-有几篇文章用自定义指令处理这个问题。您也不会
    监视数组-您的数据调用应该在
    $scope
    内进行,并启动一个新的
    $digest
    循环。@tymeJV的内存很好。但你为什么要问这个问题?这是一个很好的问题,我将在这里做一个快速测试,我认为它在推送新项目时会添加新元素,在分配新项目时会完全重新创建array@Blackhole:我不知道什么是
    XY问题。场景是,我的问题比实际情况温和得多,在实际情况下,我可以每隔几百毫秒获取额外的数据。如果每次都重新绘制容器,将导致效率低下和屏幕闪烁,因为我获取的数据是文本的段落。@Fedaykin:期待您的结果。谢谢您的提示!