在视图中的多个位置使用相同的ng-repeat数据

时间:2015-11-05 11:45:41

标签: angularjs angularjs-ng-repeat ng-repeat

我需要在页面的不同部分输出两个包含来自同一ng-repeat的数据的列表。例如:

// list # 1
<ul ng-repeat="item in items track by item.id">
    <li ng-bind="item.name"></li>
</ul>

// list # 2
<ul ng-repeat="item in items track by item.id">
    <li ng-bind="item.color"></li>
</ul>

有没有办法使用ng-repeat中第一个ng-repeat实例的数据,而不是使用相同list # 2的多个实例?

3 个答案:

答案 0 :(得分:2)

想要这样做的原因是什么?我怀疑会有任何明显的性能提升,所以我没有看到再次使用ng-repeat(以及再次使用)来获取相同数据的问题。

除非你有其他理由不想那样做,否则我会说没关系。

答案 1 :(得分:2)

我想不出以上述方式进行优化的方法。但是,如果您的列表很长,您可能会遇到性能问题。由于双向数据绑定,ng-repeats每个都设置了一个隐式观察器。当您的网页包含大量数据和大量观察者时,您可能会遇到性能问题。如果你的列表数据不需要是动态的 - 也就是说,用选择或其他东西改变 - 我建议使用一次时间绑定。它们可以通过Angular 1.3开箱即用,还有第三方软件包可以在Angular 1.2中完成同样的工作。如果你担心ng-repeats的性能(这听起来就像你在问题中真正得到的那样),那么值得实现一次性绑定。

答案 2 :(得分:1)

计算上说,制作两个循环,每个循环一个操作或一个循环两个操作是相同的(如果不是一些开销)。
可能你可以做一个打印所有<li>元素的循环,然后将一些元素移动到另一个<ul>,但实际上可能会更复杂(并且可能需要在&#34;角度方式&#34;)。

我怀疑是否有一种更优化的方式,如果有它不是很多