我的情况是我将项目分配给范围,例如:
$scope.items = [{
name: 'one',
value: 1
}{
name: 'two',
value: 2
}]
然后我使用ng-repeat
来显示它。我有一个服务,每隔几秒就会提取数据并更新这个范围变量。问题是它在更新时会重新迭代。我试图使用angular.forEach
并迭代目前在范围内的内容与新的内容,并简单地更新相应键的值,但这似乎并没有实际更新已经迭代的值。
我不希望每次有更新时都重复迭代。我有一些在一个指令中应用的样式,当它重新渲染它时忽略那些样式更改(它覆盖它们)也没有理由重新渲染每个项目,只有一个或两个可能有更新的值。有人会知道一个很好的解决方案吗?
谢谢!
答案 0 :(得分:3)
https://docs.angularjs.org/api/ng/directive/ngRepeat
ng-repeat现在有了一个名为track by
的惊人选项,如果你的对象中有一个唯一的值,即id
那么你可以像这样使用它
<span ng-repeat="item in items track by item.id">{{item.name}}</span>
我已经对它进行了大量测试,因为之前我必须使用$$ hash,它运行良好且流畅