Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript angularjs中ng重复和集合重复的区别?_Javascript_Angularjs - Fatal编程技术网

Javascript angularjs中ng重复和集合重复的区别?

Javascript angularjs中ng重复和集合重复的区别?,javascript,angularjs,Javascript,Angularjs,我对ng repeat和collection repeat有点困惑 ng重复 ... 重复采集 ... 以上两条线都做得很好,而且是一样的 如果有什么不同,请告诉我。我还有1000件物品,那么哪一件更适合这个场景?渲染速度如何?性能状态如何 集合重复不是angularjs的一部分。据我所知,它是从哪里来的。由于collection repeat可以更好地处理大量项目,因此创建的是使用ng repeat collection repeat允许应用程序显示大量项目列表 比ng repeat

我对ng repeat和collection repeat有点困惑

ng重复

...
重复采集

...
以上两条线都做得很好,而且是一样的

如果有什么不同,请告诉我。我还有1000件物品,那么哪一件更适合这个场景?渲染速度如何?性能状态如何


集合重复
不是angularjs的一部分。据我所知,它是从哪里来的。由于
collection repeat
可以更好地处理大量项目,因此创建的是使用
ng repeat


collection repeat
允许应用程序显示大量项目列表 比
ng repeat


如果有1000个
元素
,我强烈建议重复收集
。它更灵活,而且它可以从
集合
中呈现尽可能多的
项目
,尽可能多的适合屏幕。其余部分是动态加载的,您甚至可以使用200k collection,它也会很顺利
ng repeat
会渲染
集合
项,直到它完成为止,因此它会给您带来更差的性能

所以,
collection repeat
是我的朋友

祝你发展顺利



注意:
collection repeat
不是angular core的一部分,请在此查看更多信息:

collection repeat是爱奥尼亚用于滚动巨大列表的黄油般光滑的解决方案。collection repeat可用于大型项目列表,并且在处理大型数据集时具有高性能。它仅将当前可见的项目呈现到DOM中。这意味着在可容纳八个项目的手机屏幕上,仅呈现与当前滚动位置匹配的八个项目

Ng重复角形核心模块的一部分。ngRepeat指令对集合中的每个项实例化一次模板。每个模板实例都有自己的作用域,其中给定的循环变量设置为当前集合项,$index设置为项索引或键

根据用例,您可以使用任何选项。然而,如果你使用离子框架移动,那么我建议去收集重复


此外,如果需要使用ng repeat,建议在服务器端处理数据,并逐部分请求。这样,您就可以在客户端获得高性能和更少的处理。另一种选择是将大数据集存储在客户端浏览器中,然后使用该数据集处理数据。

据我所知,ng repeat适用于少量项目,collection repeat非常适用于大量项目。在设备中查看/渲染时,它实际上与性能有关。为了更好的理解你可以看到这一点,这真的有助于我理解这两者

用简单的词- Ionic有一个collection repeat指令,当您需要显示非常大的列表时,可以使用该指令,而不是ng repeat

它是如何工作的?(深度)

该模块分为两个组件,$repeatFactory(定义辅助函数的服务)和collectRepeat(大多数逻辑所在的指令)

从工厂获得的最重要信息是repeatManager方法。它是在指令的link函数开头实例化的构造函数,负责维护滚动视图的状态

在创建repeatManager的新实例时,还需要生成一个新的对象(或映射),以作为所有已被转移、呈现且其范围已更新的项的引用。封闭的父元素也必须注册,以便我们以后可以将其高度更改为集合中所有项的高度

接下来,在集合上设置一个监视,并在集合更改时调用一个匿名函数集。这就是大部分逻辑所在的位置。它分为三个步骤

  • 转移并渲染集合的第一个元素,以便可以注册每个单独项目的高度和其他属性,调整父div的高度,并计算视口的大小
  • 确定视口的大小后,循环并渲染适合视口的n个项目(加上一些额外的平滑度)
  • 打开“滚动”事件侦听器。滚动内容以返回集合第一个元素的滚动高度,并仅呈现必要的元素
下面的代码中还有一些额外的花絮(也称为注释)。如果您在遵循上述概要时遇到困难,它将有助于缓解一些混乱。github上也提供了该模块

差异-工作示例


可能会有帮助,但如果我只使用angularjs。那我会遇到什么样的问题?所以ng repeat不适合大数据量?您不能在angular中使用
collection repeat
,因为它不是核心库的一部分。我猜爱奥尼亚添加它是因为很有可能手机浏览器的性能会比桌面浏览器差。是的,我知道那个家伙,实际上我的问题是如果我有大量数据,那么我可以在angularjs中做什么?ng repeat可以吗?这取决于你如何使用它。如果您有任何性能问题,那么您应该返回具体案例,以便我们可以帮助您优化它。例如,您可以编写自己的指令来执行
foreach
函数。
<ion-item ng-repeat="item in items" >
    ...
</ion-item>
<ion-item collection-repeat="item in items">
    ...
</ion-item>