可分类性能
Sortable performance
我有一个 Sortable 的情况,我似乎无法在 Plunker 中复制。
据我所知,由于变化检测中的某些原因,Sortable 变慢了很多。慢到无法使用的地步。在视觉上,您可以看到第一个动画,但随着它慢慢完成变化检测,它会非常缓慢地刷新。
这是一个模仿我的代码的插件。
http://plnkr.co/edit/veH2Y6CkFZ1Dc5jwcPWZ?p=preview
<kendo-sortable [data]="columns"
zone="abcdefg"
[animation]="true"
[activeIndex]="activeIndex"
itemClass="item"
emptyItemClass="emptyItem"
activeItemClass="activeItem item">
<ng-template let-column="item">
<div class="container" (click)="itemClick(column)">
<span class="col-name">
{{column.title || column.field}}
</span>
<span class="col-width">{{column.width}}</span>
</div>
</ng-template>
</kendo-sortable>
基本上,对话框被包装在一个可重复使用的组件中,我将字符串、模板或组件输入其中。
进入 SortableThingComponent 输入的 "columns" 数组是来自 kendo 网格的数组(所有新的 Column 对象)的副本。
由于我无法复制减速,我不确定发生了什么。有没有人看到任何关于 Sortable 的东西或有任何花絮?
编辑
这是一个包含网格的更新插件。我注意到如果网格中没有数据,Sortable 会更快。可行,但仍然有点慢。网格为虚拟滚动,页面大小为100。
http://plnkr.co/edit/hw8HaKpyZ0lRlVwF2tYp?p=preview
编辑 2
用数据更新了最后一个 plunker。现在我正在重现这个问题。
对此可以做些什么?
这是目前的解决方法;在可排序对话框打开时分离网格组件的变化检测器:http://plnkr.co/edit/yy1Z4rWC53vS3xCnxrWT?p=preview
constructor(private changeDetectorRef: ChangeDetectorRef) { }
this.changeDetectorRef.detach(); // when dialog opens
this.changeDetectorRef.reattach(); // when dialog closes
在 plunker 中,由于我打开对话框的方式,我不得不添加一个 this.changeDetectorRef.detectChanges() 。
目前,这是一个不错的解决方法。我可能会尝试使用变更检测策略来提高效率
我有一个 Sortable 的情况,我似乎无法在 Plunker 中复制。
据我所知,由于变化检测中的某些原因,Sortable 变慢了很多。慢到无法使用的地步。在视觉上,您可以看到第一个动画,但随着它慢慢完成变化检测,它会非常缓慢地刷新。
这是一个模仿我的代码的插件。
http://plnkr.co/edit/veH2Y6CkFZ1Dc5jwcPWZ?p=preview
<kendo-sortable [data]="columns"
zone="abcdefg"
[animation]="true"
[activeIndex]="activeIndex"
itemClass="item"
emptyItemClass="emptyItem"
activeItemClass="activeItem item">
<ng-template let-column="item">
<div class="container" (click)="itemClick(column)">
<span class="col-name">
{{column.title || column.field}}
</span>
<span class="col-width">{{column.width}}</span>
</div>
</ng-template>
</kendo-sortable>
基本上,对话框被包装在一个可重复使用的组件中,我将字符串、模板或组件输入其中。 进入 SortableThingComponent 输入的 "columns" 数组是来自 kendo 网格的数组(所有新的 Column 对象)的副本。
由于我无法复制减速,我不确定发生了什么。有没有人看到任何关于 Sortable 的东西或有任何花絮?
编辑
这是一个包含网格的更新插件。我注意到如果网格中没有数据,Sortable 会更快。可行,但仍然有点慢。网格为虚拟滚动,页面大小为100。
http://plnkr.co/edit/hw8HaKpyZ0lRlVwF2tYp?p=preview
编辑 2
用数据更新了最后一个 plunker。现在我正在重现这个问题。 对此可以做些什么?
这是目前的解决方法;在可排序对话框打开时分离网格组件的变化检测器:http://plnkr.co/edit/yy1Z4rWC53vS3xCnxrWT?p=preview
constructor(private changeDetectorRef: ChangeDetectorRef) { }
this.changeDetectorRef.detach(); // when dialog opens
this.changeDetectorRef.reattach(); // when dialog closes
在 plunker 中,由于我打开对话框的方式,我不得不添加一个 this.changeDetectorRef.detectChanges() 。 目前,这是一个不错的解决方法。我可能会尝试使用变更检测策略来提高效率