Ionic-framework: VirtualScroll no funciona con Immutable.List

Creado en 1 sept. 2016  ·  3Comentarios  ·  Fuente: ionic-team/ionic-framework

Breve descripción del problema:

Intentar reemplazar *ngFor="let item of items" con la alternativa virtualScroll no representa ningún elemento (no se agrega nada en el dom) o cada virtualItem está vacío si los elementos son Immutable.List. Immutable.List es enumerable y, por lo tanto, funciona bien con ngFor y, dado que angular2 y la inmutabilidad funcionan tan bien juntos, creo que esto debería funcionar.

¿Qué comportamiento esperas?

Representar elementos de una lista inmutable correctamente

¿Qué versión iónica? 1.xo 2.x
Ionic 2 Beta 11

Plunker que muestra un ejemplo de su problema.

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

Ejecute ionic info desde el indicador de terminal / cmd: (pegue la salida a continuación)
CLI de Córdoba: 6.3.0
Versión de Gulp: CLI versión 3.9.1
Gulp local: versión local 3.9.1
Versión del marco iónico: 2.0.0-beta.11
Versión Ionic CLI: 2.0.0-beta.36
Versión de Ionic App Lib: 2.0.0-beta.19
ios-deploy versión: 1.8.6
versión ios-sim: 5.0.6
Sistema operativo: Mac OS X El Capitan
Versión de nodo: v4.3.1
Versión de Xcode: Xcode 7.3.1 Versión de compilación 7D1014

stale issue

Comentario más útil

Para agregar a este problema, después de RC0 se usó esa final angular, proporcionar una matriz de objetos inmutables en VirtualScroll conduce a una degradación severa del rendimiento ya que VirtualScroll realiza su propia activación de detección de cambios, lo que conduce a una comparación profunda (a través de devModeEqual) de los objetos inmutables que solo está tomando cantidades locas de tiempo.
Creo que VirtualScroll debería ser compatible con la estrategia de detección de cambios de OnPush para admitir objetos inmutables.

ACTUALIZACIÓN 20/04/17:
Creo que este ya no es el caso, ya que las comparaciones de elementos utilizan comparaciones de diferencias de Angular4.0 que tienen en cuenta los elementos inmutables, pero los problemas de enumeración de listas dentro de Virtual Scroll aún permanecen sin cambios.

Todos 3 comentarios

Para agregar a este problema, después de RC0 se usó esa final angular, proporcionar una matriz de objetos inmutables en VirtualScroll conduce a una degradación severa del rendimiento ya que VirtualScroll realiza su propia activación de detección de cambios, lo que conduce a una comparación profunda (a través de devModeEqual) de los objetos inmutables que solo está tomando cantidades locas de tiempo.
Creo que VirtualScroll debería ser compatible con la estrategia de detección de cambios de OnPush para admitir objetos inmutables.

ACTUALIZACIÓN 20/04/17:
Creo que este ya no es el caso, ya que las comparaciones de elementos utilizan comparaciones de diferencias de Angular4.0 que tienen en cuenta los elementos inmutables, pero los problemas de enumeración de listas dentro de Virtual Scroll aún permanecen sin cambios.

Esto sigue siendo un problema en la última versión de Ionic (v3.0.1) y aquí hay un plunker actualizado que demuestra el problema una vez más.
http://plnkr.co/edit/2Pz0fIX9MV7er12UaFRf?p=preview

Nuestra aplicación utiliza conjuntos inmutables y las listas de todo el mundo, pero debido al hecho de que tenemos que mostrar 1000 de los registros en una lista desplazable, tenemos que usar el desplazamiento virtual. Esto requiere que todos los datos se vuelvan a convertir en objetos mutables (muy costoso) y que todos los componentes utilizados dentro del desplazamiento virtual también tengan que aceptar objetos mutables.
De esta manera estamos atrapados ya que tenemos que usar el desplazamiento virtual para un mejor rendimiento, pero estamos degradando el rendimiento debido a que intentamos ser compatibles con el desplazamiento virtual.

¡Gracias por el problema! Este problema se está cerrando debido a la inactividad. Si esto sigue siendo un problema con la última versión de Ionic, cree un nuevo problema y asegúrese de que la plantilla esté completa.

¡Gracias por usar Ionic!

¿Fue útil esta página
0 / 5 - 0 calificaciones