我使用Angular开发的日历应用程序,我遇到了渲染性能问题。我看了很多关于ngRepeat渲染性能的主题,我试过bindonce但是我还是卡住了。
我创建了一个向您展示问题的傻瓜。 http://plnkr.co/edit/UHVC5a?p=preview - 它重现了我的应用程序的逻辑。
我们说它是一个5行(每周一个)的日历,每行150个事件(我知道这是一个很大的数字,但是对于非常忙碌的人来说这很常见)。
如您所见,渲染速度非常慢。这是我可以提高的吗?你有什么想法吗?
非常感谢你。
答案 0 :(得分:2)
我注意到每个事件的模板都使用了一些绑定。一些建议:
如果使用像https://github.com/pasvaz/bindonce之类的东西可以加快速度,可能值得研究。
或者您可以在指令中手动设置每个元素的HTML,而不是使用绑定。
每个指令使用都有一个异步函数getColor。这是否意味着将有150 * 5 = 750次调用服务器?可能值得重新思考一下架构,因为它非常多,并且可能需要时间,而不管Angular的速度有多快
如果确实需要这些异步调用/不是每次都调用服务器,那么你只能一次/或分组更改指令的所有实例中的$ scope变量,比如通过添加promises一个数组,定期检查它以在已解析的函数上运行某些函数,或者使用$ q.all。