Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/454.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 角度:快速渲染大量DOM元素_Javascript_Angularjs_Rendering - Fatal编程技术网

Javascript 角度:快速渲染大量DOM元素

Javascript 角度:快速渲染大量DOM元素,javascript,angularjs,rendering,Javascript,Angularjs,Rendering,我在使用Angular开发的日历应用程序上工作,遇到了渲染性能问题。我看了很多关于ngRepeat渲染性能的主题,我试过BindRepeat一次,但我还是被卡住了 我创造了一个plunker来向你展示我的问题它再现了我的应用程序的逻辑 假设这是一个有5行(每周一行)的日历,每行有150个事件(我知道这是一个很大的数字,但对于非常忙碌的人来说,这很常见) 如您所见,渲染非常缓慢。这是我可以改进的吗?你有什么想法吗 非常感谢。我注意到每个事件的模板都使用了一些绑定。一些建议: 如果使用类似的方法可

我在使用Angular开发的日历应用程序上工作,遇到了渲染性能问题。我看了很多关于ngRepeat渲染性能的主题,我试过BindRepeat一次,但我还是被卡住了

我创造了一个plunker来向你展示我的问题它再现了我的应用程序的逻辑

假设这是一个有5行(每周一行)的日历,每行有150个事件(我知道这是一个很大的数字,但对于非常忙碌的人来说,这很常见)

如您所见,渲染非常缓慢。这是我可以改进的吗?你有什么想法吗


非常感谢。

我注意到每个事件的模板都使用了一些绑定。一些建议:

  • 如果使用类似的方法可以加快速度,则可能值得研究

  • 或者您可以在指令中手动设置每个元素的HTML,而不是使用绑定

  • 在每个指令使用中都有一个异步函数getColor。这是否意味着服务器将有150*5=750个呼叫?也许值得重新思考的是架构,因为这是相当多的,而且无论角度变得多么快,都可能需要时间

  • 如果这些异步调用确实是必需的/不是每次都调用服务器,那么您只能一次/或分组更改指令的所有实例中的$scope变量,例如向数组添加承诺、定期检查它以在已解析的实例上运行某些函数,或使用$q.all


您是否已经在使用“跟踪方式”。谢谢是的,我已经使用了“track by”。在这个示例中,您向页面添加了2250个事件(每行450个,共5行)。大约有一半的时间用于将
事件
指令应用于所有这些元素。我的第一个想法是试着缩小你在第一页上显示的事件的数量——即使只是从用户体验的角度来看,也有很多信息要放在某人面前,仅供参考。。。如果每周只显示50个事件元素,那么整个月显示250个事件元素,我的测量结果显示渲染时间从500毫秒到100毫秒。您可以随时向用户显示某种过滤器,以帮助将2250事件简化为更易于管理的内容