Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.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
如何实施“a”;“加载更多”;用Angularjs分页而不重复ng?_Angularjs - Fatal编程技术网

如何实施“a”;“加载更多”;用Angularjs分页而不重复ng?

如何实施“a”;“加载更多”;用Angularjs分页而不重复ng?,angularjs,Angularjs,由于ng repeat会重新绘制模型更改等事件上的所有项目,那么在angularjs中实现“加载更多”行为/分页的更好方法是什么?您到底看到了什么让您想要避免的ngRepeat?我起草了一个简单的例子,说明了什么被重新绘制,什么没有: 例1: 如果您检查控制台,您将看到当您单击add按钮向模型添加另一项时,只有新添加的项被渲染 例2: 操纵模型中的每个项目,仍然不会重新绘制整个ngRepeat,它只是更新需要的内容 例3: 为了帮助说明示例2是正确的,我在图像的src中添加了{{{item.na

由于ng repeat会重新绘制模型更改等事件上的所有项目,那么在angularjs中实现“加载更多”行为/分页的更好方法是什么?

您到底看到了什么让您想要避免的
ngRepeat
?我起草了一个简单的例子,说明了什么被重新绘制,什么没有:

例1:

如果您检查控制台,您将看到当您单击add按钮向模型添加另一项时,只有新添加的项被渲染

例2:

操纵模型中的每个项目,仍然不会重新绘制整个
ngRepeat
,它只是更新需要的内容

例3:

为了帮助说明示例2是正确的,我在图像的src中添加了
{{{item.name}}
,以确保它会发生更改(确实如此)


那么你到底想避免什么呢?

我最近也遇到了类似的问题,请重复一遍,看看。基本上,您可以在这里应用这种方法。具有视图中所有文档的列表和仅文档的子列表。当您到达列表的末尾时,将更多文档加载到所有文档中,然后从那里抓取最后一个X作为可见列表,但在加载时继续从顶部删除

是的,这将导致大量重绘。但它不会引人注目


您还可以避免使用bind once(自1.3版起为本机)进行大量重绘,但它仍然会生成大量观察者。

使用您自己的指令来处理HTML本身,并避免AngularJS框架。。。但是。。。首先使用AngularJS有什么意义?为了更好地阅读
ng repeat
和渲染:我对这个问题得到的答案是,repeater重新绘制(或重新调整DOM元素)它的所有内容,如果你不在模板中调用像
{getTheStatusOf(something)}这样的控制器函数,你就没事了
,因为AngularJS必须调用该函数来确定它是否更改。我认为这取决于您对“重画”的定义。ng repeat不会重新创建元素,但从我通过单步执行代码看到的情况来看,它确实会将元素从DOM中删除并添加回DOM中。至少在我的代码中是这样。我确信值得深入研究ngRepeat docs()——Angular足够聪明,可以查看对象是否相同,并决定是否需要重新渲染。有一种方法可以提供自定义函数,默认情况下,Angle会查看对象的标识。