Angular ng重复对象深度,性能

时间:2014-04-26 21:42:57

标签: angularjs angularjs-ng-repeat

我有复杂的json对象(超过100个项目),我需要使用ngRepeat指令运行某些值,并且只显示一个值。

复杂对象

$scope.complicatedList = [
  {
    "id": 1,
    "value": [
      {
        "data": {
          "otherdata": "sss"
        }
      }
    ]
  },
  ....
];

另一方面,我想创建从复杂的对象生成的新对象并使用新创建的对象(例如使用下划线)

复杂对象的简短版本

  $scope.shortVersionList = [
      {id: 1, "otherdata": "sss1"},
      {id: 2, "otherdata": "sss2"},
      {id: 3, "otherdata": "sss3"},
      ...
      {id: 100, "otherdata": "sss3"}
    ];

我之前试着去理解:是否应该有任何性能差异?

我使用在iOS / Android(Cordova + Ionic)上运行的angular,我不知道它是否可以存储两个版本的Object(实际和简短版本)或只存储一个对象和游戏仅限HTML。

谢谢,

1 个答案:

答案 0 :(得分:1)

最好有一个单独的服务/方法返回短对象,而不是在html渲染阶段过滤它,因为它会减慢渲染速度。虽然对于标准硬件上的普通浏览器,差异可以忽略不计,在您的情况下,使用ios / android设备,我建议使用单独的对象。

编辑:

但是,请注意,在性能方面,两者之间不存在任何可衡量的差异:

<div data-ng-repeat="complicatedItem in complicatedList">
  {{complicatedItem.nested.moreNested.evenMoreNested.someValue}}
</div>

vs

<div data-ng-repeat="simpleItem in simpleItemList">
   {{simpleItem.someValue}}
</div>

我试图告诉你的是,ng-repeats中没有逻辑和/或添加额外的ng-repeats。如果不是这种情况并且可以在不添加额外的ng-repeats的情况下呈现数据,那么我向您展示的第一个和第二个变体将具有相同的性能。第二个是可读性稍好一些,但需要维护两种服务方法的成本。