我正在使用 http://dotansimha.github.io/angularjs-dropdown-multiselect/#/ 。对于超过500的列表,此下拉列表加载速度极慢。需要一分钟才能显示选项。这有更好的替代方案吗?请建议。
答案 0 :(得分:1)
你遇到了一个基本的挑战,经常 - 错误地 - 归咎于Angular。简单的事实是,无论是使用Angular还是其他东西,创建和注入500个元素都会变得很慢。 Angular使用ng-repeat
非常容易,但你不应该这样做。在这种情况下,每个'item'似乎有3个DOM元素,因此您实际上为500个项目创建了1500多个DOM元素。滚动表演也将是可怕的。
所以,为什么你有问题,但不是你问题的解决方案。首先,我会考虑多选是否真的是一个有500个选项的有用方法。这听起来对用户来说基本上是混乱和困难的。更像是自动完成标记界面(如SO)可能更适合这么多选项,并且会阻止您将所有选项注入到DOM中。
更一般地说,显示500个项目列表的最佳方法是......不要实际创建500个DOM元素。现在最好的方法只涉及创建实际适合屏幕的元素,然后在滚动时回收内容。在您的用例中使用Ionic's collection-repeat directive之类的内容可能会显着提高性能。
我没有看到任何方法使这个特定的指令在500个项目中表现更好,没有沿着这些行的重要重构。这不是错误的代码,但只是不是为那个大小的列表设计的。
答案 1 :(得分:0)
我遇到了同样的问题。 只需将$ ajax请求更改为' async:false'这解决了这个问题。
首先让$ ajax请求完成,然后加载DOM。 如果是' async:true'请求,它不等待服务器响应并加载DOM。