AngularJS的渲染速度非常慢,大约有2000个元素?

这里是小提琴:http://jsfiddle.net/D5h7H/7/

它呈现以下内容:

<div ng-repeat="group in Model.Groups">
    <span>{{group.Name}}</span>
    <div ng-repeat="filter in group.Filters">
        <input type="checkbox" ng-model="filter.enabled">{{filter.Name}}
        <select ng-disabled="!filter.enabled">
            <option ng-repeat="value in filter.Values">{{value}}</option>
        </select>
    </div>
</div>

这是一个过滤器的列表,从服务器加载到json中,然后呈现给用户(在一个例子中,json就是在Fiddle中生成的)。 目前有6组30个滤波器,每个滤波器有15个选项元件。

在Firefox中,现在需要大约2秒来重新绘制用户界面。

对于角度js这个时间好吗? 有什么我做错了,造成2秒。 渲染(因为2000个元素对我来说看起来不是很大,但是2秒肯定很大)?


在AngularJS 1.3+中,内置了One-time binding

一次性绑定表达式的主要目的是提供一种方法来创建一个绑定,一旦绑定稳定,就会取消注册并释放资源。 减少正在观看的表达式的数量使摘要循环更快,并允许同时显示更多信息。

为了进行一次性绑定,将prepend ::绑定到绑定值:

<div>{{::name}}</div> 

另请参阅相关讨论:

  • 呈现没有数据绑定的值
  • 数据绑定在AngularJS中如何工作?
  • 真正阻止绑定元素 - 解除绑定元素 - AngularJS

  • 如果在绑定数据后不需要更新UI,则应该查看绑定。 bindonce也可以等到一个对象被加载后再进行绑定。 它将为您节省大量时间,并在正确使用时显着降低您的$watch() es。


    链接地址: http://www.djcxy.com/p/23133.html

    上一篇: AngularJS really slow at rendering with about 2000 elements?

    下一篇: how does the binding and digesting work in AngularJS?