在 Angular UI Bootstrap 中关闭模式,同时擦除 1000 个项目的数组,需要很长时间

Closing modal in Angular UI Bootstrap while erasing array of 1000 items, takes a significant time

我有一个 Angular 应用程序,我将一个空数组传递给 Angular-UI Bootstrap Modal. Depends on user choice it may be filled or not with items, up to 1000 objects. All them I display in a list with ng-repeat. All items in a list are pre-generated, so I can't retrieve them asynchronously for example by using plugin like smart-table。 当用户按下 ok 按钮时,所有生成的值都返回到调用它的 controller。从技术上讲,它们都已经存在了,因为我通过引用传递了 $scope.items

resolve: {
        items: function () {
          return $scope.items;
        }
      }

但是当我按下 取消 按钮时,我正在通过调用 $scope.items.length=0; 删除数组中的所有项目 我的问题是这需要一段时间。在我下面的 plunker 示例中,它几乎不引人注意但很明显,但在我的实际应用程序中它更引人注意且不可接受。

我的猜测是由于Angular的双向绑定,清理所有观察者需要时间,但我不知道如何解决这个问题,如果可以解决。

我在 plunker 的 MCVE:http://plnkr.co/edit/JwanDxBzh3a7ilEX58z8?p=preview

更新:尝试使用一次性的 binging,plunker 在这里:http://plnkr.co/edit/PjzHRYiuXFHE1M1Pap6U?p=preview

  <li ng-repeat="item in items">
                <a href="#"> {{ ::item | date:'yyyy-MM-dd' }}</a>
            </li>

如此处所述:它没有帮助。

好的,我是对的,我和Angular的one-time binding差不多了,我只是用错了地方,应该用在ng-repeat中这样:

 <li ng-repeat="item in ::items">
                    <a href="#"> {{::item | date:'yyyy-MM-dd' }}</a>
                </li>

感谢这个回答:

工作的 plunker 位于此处:http://plnkr.co/edit/XWi6Z0eCXveV58WJfpo6?p=preview