假设你的指令控制器中有一个像
这样的数组this.items = [
{active: true, title: 'bar', ...},
{active: false, title: 'foo', ...},
...
];
在模板中,您可视化它
<ol>
<li ng-repeat="item in ::items" ng-class="...">{{item.title}}</li>
</ol>
注意::
确保它只执行一次,因为在ng-repeat
准备就绪后,该指令也会注入一些DOM元素。
但是,在某个时间点,应用会收到更新
this.items = updatedItems;
除了每个项目的某些属性(active
可能会从true
更改为false
之外),更新与原始数据相同。现在,由于::
,更新不会执行任何操作。现在我可以遍历每个项目
updatedItems.forEach((item, index) => {
$scope.items[index].active = item.active;
$scope.items[index].title = item.title;
...
});
所以问题是这个问题的最佳方法是什么?
答案 0 :(得分:2)
拥有数据集和数据绑定的副本,而不是实际的数据集,您希望模板忽略的更改,所有这些都适用于特定条件。
然后,当您希望更新数据时,您只需更新对复制数据的必要更改,即可反映更改。我理解,这确实增加了获取数据副本的开销,但是一个简单的解决方案通常可以避免以后的大量工作,特别是如果从团队的其他成员那里查看源代码。