为什么我的 angular 网格这么慢?

Why is my angular grid so slow?

因此,我创建了一些基于浮动 divs 绘制数据网格的自定义指令(因为 FF 中的嵌套 flex 实现很糟糕 - 但这不是重点)。

工作原理:

The problem is that every time I'm hitting some "up" or "down" key on my keyboard, Angular is "redrawing" EVERY cells of the list.

那么,假设我的数据列表中有 200 行,每行有 7 列。第一次加载页面,它在 renderCell() 函数中传递了 ~3000 次。好吧,让我们接受吧(不太明白为什么,但是好吧)。

我按下向下键以转到列表的第二行。它在 renderCell() 函数中传递了约 1100 次。

所以是的,结果非常慢(想象一下如果我按下向下箭头键以便在我的行中快速导航)...我不能接受。如果有人可以向我解释......任何帮助都会被大大接受:)

如果我在没有指令的情况下做同样的事情(直接 DOM 操作,用手工制作的列而不是在 ng-repeat 中的 ng-repeat 中),每件事都是顺利和干净的。

是的,我研究了市场上的每个 angular 网格。没有人满足我的目的,这就是为什么我决定创建自己的。

不,我现在真的不能给你一些 JSFiddle 或任何东西。整个应用程序真的很触手可及,将其隔离有点复杂)。

尝试使用一次bind (angular 1.3+)

<div data-ng-repeat="row in ::list">
    <div data-ng-repeat="cell in ::theGridColumns"
         data-ng-bind-html="::(renderCell(row, cell))">
    </div>
</div>