AngularJs - ngRepeat需要很长时间才能显示数据

时间:2015-04-16 11:10:42

标签: javascript angularjs angularjs-ng-repeat

我的应用程序每页收到100个项目。对于分页,我使用自定义解决方案,为接下来的100个项目进行新的AJAX调用。获取数据所需的时间约为400毫秒。但似乎显示器需要时间来渲染。我读的原因可能是ng-repeat。我无法使用track by,因为我没有包含所有唯一项的列。我还读了几个我可以使用limit的解决方案,但由于我已经使用了服务器端分页,所以我不需要限制。在这种情况下,如何改善渲染时间?

2 个答案:

答案 0 :(得分:1)

{strong>不的100个项目应该是ng-repeat的问题,但这取决于您的网页的完整外观。

ng-repeat创造了许多手表,使角度的脏检查(消化过程)更长。

通常,您使用ng-repeat来显示数据而不是创建输入,因此您不需要双向绑定(单向就足够了。)

所以bindonce是一个很好的库,可以帮助切割不需要的手表。

而不是做这样的事情:

<ul>
    <li ng-repeat="person in Persons">
        <a ng-href="#/people/{{person.id}}"><img ng-src="{{person.imageUrl}}"></a>
        <a ng-href="#/people/{{person.id}}"><span ng-bind="person.name"></span></a>
        <p ng-class="{'cycled':person.generated}" ng-bind-html-unsafe="person.description"></p>
    </li>
</ul>

你应该这样做:

<ul>
    <li bindonce ng-repeat="person in Persons">
        <a bo-href="'#/people/' + person.id"><img bo-src="person.imageUrl"></a>
        <a bo-href="'#/people/' + person.id" bo-text="person.name"></a>
        <p bo-class="{'cycled':person.generated}" bo-html="person.description"></p>
    </li>
</ul>

答案 1 :(得分:0)

如果您有大量的动态数据,请查看以下链接...它可能对您有所帮助。

  

Angular ng-class performance issue when too many elements in DOM