Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.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下拉多选需要很长时间才能加载_Javascript_Jquery_Angularjs - Fatal编程技术网

Javascript Angularjs下拉多选需要很长时间才能加载

Javascript Angularjs下拉多选需要很长时间才能加载,javascript,jquery,angularjs,Javascript,Jquery,Angularjs,我正在使用 . 对于500个以上的列表,此下拉列表的加载速度非常慢。显示选项需要整整一分钟的时间。有更好的替代方案吗?请提出建议。您在DOM方面遇到了一个根本性的挑战,这通常被错误地归咎于角度。一个简单的事实是,创建500个元素并将其注入DOM总是很慢,不管您是使用Angular还是其他方法。使用ng repeat,Angular使这项操作非常容易,但您不应该这样做。在本例中,每个“项”似乎有3个DOM元素,因此实际上为500个项创建了1500多个DOM元素。滚动的表现也将是可怕的 所以,这就是

我正在使用
. 对于500个以上的列表,此下拉列表的加载速度非常慢。显示选项需要整整一分钟的时间。有更好的替代方案吗?请提出建议。

您在DOM方面遇到了一个根本性的挑战,这通常被错误地归咎于角度。一个简单的事实是,创建500个元素并将其注入DOM总是很慢,不管您是使用Angular还是其他方法。使用
ng repeat
,Angular使这项操作非常容易,但您不应该这样做。在本例中,每个“项”似乎有3个DOM元素,因此实际上为500个项创建了1500多个DOM元素。滚动的表现也将是可怕的

所以,这就是为什么你有这个问题,但不是你问题的解决方案。首先,我想一个多选择是否真的是一个有用的方法有500个选项。对于用户来说,这听起来根本上是令人困惑和困难的。一些更像自动完成标记接口(如SO)的东西可能更适合这么多选项,并且可以防止您需要将所有选项都注入DOM

一般来说,显示500项列表的最佳方式是。。。而不是实际创建500个DOM元素。目前最好的方法是只创建屏幕上实际适合的元素,然后在滚动时循环使用内容。根据您的用例调整类似的内容可能会显著提高性能


我看不到任何方法可以使这个特定的指令在500个项目上执行得更好,而不需要沿着这些思路进行重大的重构。这不是一个糟糕的代码,只是不是为这么大的列表设计的

我也有同样的问题。 只需将$ajax请求更改为'async:false',即可解决此问题

让$ajax请求先完成,然后加载DOM。
对于“async:true”请求,它不会等待服务器响应并加载DOM。

谢谢。。但我的特殊要求是允许用户选择多个项目。为此,我想知道是否有任何可用的已经证明的角度解决方案。