对于IE8中的2000个元素,Angular ng-repeat非常慢

时间:2014-05-30 09:49:38

标签: angularjs angularjs-ng-repeat

我正在编写一个基于Angular的应用程序。它必须支持IE8 :-(当我在页面上有2000个双向绑定时,在IE8上加载页面的速度非常慢,浏览器实际上超时了。

下面是一个非常简单的页面,说明了这个问题。它在JavaScript中创建一个包含2000个对象的数组(不在DOM中),然后将该数组分配给范围中的变量。

这在IE9和Chrome中运行良好。有了500个双向绑定,IE8需要几秒钟。但是,在我的情况下,将页面上双向绑定的数量减少到少于2000将是非常困难的。

非常感谢我可以在几秒钟内用IE8加载2000双向绑定的任何解决方案。

<!doctype html>
<html xmlns:ng="http://angularjs.org" id="ng-app" ng-app="perfModule">
<head>
    <script src="angular.min.js"></script>
    <script>
        function Phone(name, snippet) {
            this.name = name;
            this.snippet = snippet;
        }

        var perfModule = angular.module('perfModule', []);

        perfModule.controller('perfCtrl', function ($scope) {
            var phones = [];
            for (var i = 0; i < 2000; i++) {
                phones.push(new Phone('Nexus S', 'Fast just got faster with Nexus S.'));
            }
            $scope.phones = phones;
        });
    </script>
</head>
<body ng-controller="perfCtrl">
      <ul>
        <li ng-repeat="phone in phones">
            {{$index}}: <input ng-model="phone.name"> {{phone.name}} - {{phone.snippet}}
        </li>
      </ul>
</body>

1 个答案:

答案 0 :(得分:0)

试试这个:

直接在for循环中使用$ scope.phones,而不是将其分配给新的手机阵列。这可能会使数据更快地显示在屏幕上。