在 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
我有一个 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