我有一些 ng-repeat 正在构建的表。该表包含大量数据,有时 html 的构建阶段在较弱的计算机上需要 10-20 秒。
所以我开始探索如何在服务器中构建 html,但问题是我会失去数据绑定(bind),而我需要它,因为我在表中具有内联编辑功能。
最终的解决方案将在服务器端渲染表格,保留所有指令,包括 ng-repeat,并在客户端,使 ng-repeat 识别出 html 已经被第一次渲染并且不会再次渲染它,直到数据第一次发生变化。
在 ngRepeatDirective 的 Angular 源代码中,有一个“lastBlockMap”对象,其中包含 ng-repeat 创建的每个元素之间的映射到其作用域,在该结构中:
clone: [THE_ELEMET]
id: "005"
scope: ChildScope
通过阅读这篇文章: http://www.bennadel.com/blog/2443-Rendering-DOM-Elements-With-ngRepeat-In-AngularJS.htm
我得出的结论是,如果我创建这个对象,并将其以某种方式传递给 ng-repaat 指令,该指令将知道 html 已经被渲染,并且不会再次渲染。
问题是如何将这些信息传递给ng-repeat??? 有谁遇到过这种情况吗?
附注 我熟悉所有“ngRepeat preformance”帖子和文章,并且在实现此解决方案之前尝试了很多其他选项,因此请尝试帮助我解决这个问题。
第二个附注 抱歉我的英语...:)
最佳答案
目前还没有将 html 编译成 Angular 循环的解决方案。
也许您需要尝试清理尝试渲染的 json 数据并使其尽可能简单,如果您在表格内包含指令,请尝试在表格完成后渲染它。
此外,尝试找出缓慢的原因,禁用内联编辑和表内的所有其他功能。
关于javascript - 在服务器中构建 html 并绑定(bind)到 ng-repeat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20764100/