Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.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
Angularjs 有没有办法通过点击按钮来禁用ng repeat?_Angularjs - Fatal编程技术网

Angularjs 有没有办法通过点击按钮来禁用ng repeat?

Angularjs 有没有办法通过点击按钮来禁用ng repeat?,angularjs,Angularjs,我在一个元素上有ng repeat,该元素通过列表“mylist”中的项进行重复。 在javascript中,如果mylist超过了特定的大小,是否有办法“禁用”该元素上的ng repeat?或者,如果我单击按钮,列表的ng repeat行为将被禁用或指向其他列表,以便在用户向列表中添加50000项时不会出现性能问题?您可以使用limito过滤器限制ng repeat显示的条目。您可以在此处找到更多信息: 尽管没有迹象表明已达到限制,也没有显示所有元素。您需要自己实现这一点。limito过滤器仅

我在一个元素上有ng repeat,该元素通过列表“mylist”中的项进行重复。
在javascript中,如果mylist超过了特定的大小,是否有办法“禁用”该元素上的ng repeat?或者,如果我单击按钮,列表的ng repeat行为将被禁用或指向其他列表,以便在用户向列表中添加50000项时不会出现性能问题?

您可以使用
limito
过滤器限制ng repeat显示的条目。您可以在此处找到更多信息:

尽管没有迹象表明已达到限制,也没有显示所有元素。您需要自己实现这一点。
limito
过滤器仅对第一个元素进行限制,无法获取数组的视图子部分


另一种选择是使用虚拟滚动指令。类似于:

您可以随时手动更改您正在重复的内容(例如,如果t变得太大,请减少
mylist
),或者您可以简单地使用
limito
来限制重复的项目数:

<div ng-repeat="item in mylist | limitTo: myLimit">

然后,您可以添加一个按钮来“加载更多”,例如,它只能执行
$scope.myLimit+=50
(或者在用户向下滚动列表时执行此操作,通常称为“无限滚动”)。

我发现,对于导致ng重复问题的大型列表,最好创建自己的指令来为您构建表。50000个元素将使你的网站屈服于ng repeat,因为它必须在每个摘要中检查每一项。什么是“禁用”?是否要渲染
ng repeat
-ed元素并渲染其他内容?或者只渲染前N个元素?这是否有助于提高性能,使50000个项目不会被“监视”/出现性能问题。是的,这将在DOM中仅创建50个项目,并且只有这些项目才会有监视程序。表演会更好!我想限制在10个以内。除此之外,没有。您可以直接编写
limito:10
,或者按照我向您展示的
limito:myLimit
使用
$scope.myLimit=10
这样做是否有助于提高性能,使50000个项目不会被“监视”/遇到性能问题。正确,虚拟缓冲背后的思想是,只监视屏幕上可见的行。滚动条使列表中的所有项目看起来都存在,而实际上只有视图中修复的项目当前被渲染和监视。一旦这些行被滚动出视图,手表就会被移除。
$scope.myLimit = 50;