4

我正在开发一个项目,该项目基本上由以 ng-repeat 重复的复杂表单容器组成。这些表单中的每一个都有足够的功能,可以很容易地成为它自己的 Angular 应用程序,但它们会在屏幕上重复出现,并且最多可以有 30 个。

屏幕上有 5 个或更多这些,性能变得非常慢。尽管我试图禁用我们的一些较重的功能,但似乎性能上的巨大胜利只是来自禁用“不可交互”的范围。

我正在寻找一种很好的模式来“冻结”未使用的范围。我希望他们保持他们的状态,但我不希望他们倾听或依附于任何东西,直到用户专注于他们申请的表单。

4

2 回答 2

0

视口中的所有表单是否同时出现?如果没有,您可以根据用户是否可见向 DOM 添加/删除表单(使用 ng-include fe)。这样,手表会在需要时被移除并再次添加。

否则,如果您在表单控制器中指定了很多手表,则可以在未聚焦时取消观看,并在重新获得焦点时重新观看。这不会减少表单内(本机)指令创建的手表数量。这个数字也许可以通过使用bind-once来减少。

于 2013-08-14T13:26:20.937 回答
0

在没有看到您的代码的情况下,我的第一个想法是使用指令来控制它。

您可以使用绑定到表单,或者使用 $watch(使用 $watch 将取决于您的设置),以便您可以更好地控制范围。

这里有一些链接:

对于一般指令

用于 $watch 和其他控制范围的方法

于 2013-05-29T16:25:15.923 回答