Ionic-framework: VirtualScroll 不适用于 Immutable.List

创建于 2016-09-01  ·  3评论  ·  资料来源: ionic-team/ionic-framework

问题的简短描述:

尝试用 virtualScroll 替换*ngFor="let item of items"不会呈现任何项目(在 dom 中没有添加任何内容),或者如果项目是 Immutable.List,则每个 virtualItem 都是空的。 Immutable.List 是可枚举的,因此与 ngFor 一起工作得很好,因为 angular2 和 immutability 一起工作得很好,我相信这应该可以工作。

你期待什么行为?

正确呈现不可变列表的项目

哪个离子版本? 1.x 或 2.x
离子 2 测试版 11

显示您的问题示例的Plunker

http://plnkr.co/edit/2c5ZIyDyGb12kwtQ4jXW?p=preview

从终端/cmd 提示符运行ionic info :(在下面粘贴输出)
科尔多瓦 CLI:6.3.0
Gulp 版本:CLI 版本 3.9.1
Gulp 本地:本地版本 3.9.1
离子框架版本:2.0.0-beta.11
离子 CLI 版本:2.0.0-beta.36
离子应用程序库版本:2.0.0-beta.19
ios-部署版本:1.8.6
ios-sim 版本:5.0.6
操作系统:Mac OS X El Capitan
节点版本:v4.3.1
Xcode 版本:Xcode 7.3.1 构建版本 7D1014

stale issue

最有用的评论

为了增加这个问题,在使用 RC0 后,将一组不可变对象提供给 VirtualScroll 会导致严重的性能下降,因为 VirtualScroll 执行自己的更改检测触发,这导致对不可变对象进行深度比较(通过 devModeEqual)只是花费了疯狂的时间。
我相信 VirtualScroll 应该与 OnPush 更改检测策略兼容,以支持不可变对象。

20/04/17 更新:
我相信情况不再如此,因为项目比较正在使用 Angular4.0 diff 比较来考虑不可变项目,但 Virtual Scroll 中的 List 枚举问题仍然保持不变。

所有3条评论

为了增加这个问题,在使用 RC0 后,将一组不可变对象提供给 VirtualScroll 会导致严重的性能下降,因为 VirtualScroll 执行自己的更改检测触发,这导致对不可变对象进行深度比较(通过 devModeEqual)只是花费了疯狂的时间。
我相信 VirtualScroll 应该与 OnPush 更改检测策略兼容,以支持不可变对象。

20/04/17 更新:
我相信情况不再如此,因为项目比较正在使用 Angular4.0 diff 比较来考虑不可变项目,但 Virtual Scroll 中的 List 枚举问题仍然保持不变。

这仍然是最新的 Ionic (v3.0.1) 上的一个问题,这里有一个更新的 plunker 再次展示了这个问题。
http://plnkr.co/edit/2Pz0fIX9MV7er12UaFRf?p=preview

我们的应用程序到处都使用不可变的集合和列表,但由于我们必须在可滚动列表中显示 1000 条记录,我们必须使用虚拟滚动。 这要求将所有数据转换回可变对象(非常昂贵),并且虚拟滚动中使用的所有组件也必须接受可变对象。
这样我们就陷入了困境,因为我们必须使用虚拟滚动来获得更好的性能,但是由于试图与虚拟滚动兼容,我们正在降低性能。

感谢您的问题! 由于不活动,此问题正在关闭。 如果使用最新版本的 Ionic 仍然存在问题,请创建一个新问题并确保模板已完整填写。

感谢您使用 Ionic!

此页面是否有帮助?
0 / 5 - 0 等级