2012-04-27 10 views
6

Tiene un problema con un girador girado mientras ember.js lo hace. Tengo un ejemplo jsFiddle muy genérico que ilustra el problema:Pausas gif animadas cuando los objetos ember.js se están cargando

http://jsfiddle.net/h4ZcZ/2/

supongo que tiene que haber una manera simple de hacer que esto funcione como se esperaba, pero yo no estoy encontrando. He intentado utilizar una implementación de JavaScript/CSS de un spinner (spin.js) con los mismos resultados. Vi algunas cosas que indicaban que esto era típicamente un problema de IE, pero ese no es el caso aquí. Esto sucede en todos los navegadores de Windows y también lo he probado en Mac Safari.

+0

¿Cuántos artículos hay en su colección? –

+0

50 elementos en la colección que es un objeto Ember.js. Cada objeto contiene una matriz de otros objetos que suman 6 cada uno. – BrianB

Respuesta

1

El problema es su ciclo: básicamente está bloqueando el hilo. Utilizaría los tiempos de espera y el trabajo por hacer para dar a otras necesidades de procesamiento en la página la capacidad de ejecución.

+0

La iteración de matrices no es una gran burla aquí (o al menos solo es parte del problema). La implementación de Ember's handlebars.js se repite a través de itemsController con la etiqueta {{#each}}. Miré algunos patrones de rendimiento usando setTimeout y [Nick Fitzgerald's Patterns] (http://fitzgeraldnick.com/weblog/35/) pero eso solo ayudará con la carga de elementos en el controlador, no con la actualización del DOM de Ember que en mi caso específico es donde está ocurriendo la mayor parte del bloqueo de hilos. – BrianB

+0

Ah, punto justo. Eso tiene mucho más sentido. –

1

En cuanto a la causa raíz, @ChristopherSwasey es correcto. Le pregunté a otros desarrolladores de Ember acerca de esto. No hay solución, pero hay dos pensamientos interesantes que pueden ayudar:

1) Un desarrollador informó que se ha encontrado con este problema y lo solucionó asegurándose de que el gif animado comenzara antes de la ejecución larga de javascript.

2) Otro desarrollador sugirió que usar una lista virtualizada es la ruta correcta, por lo que solo se renderizan los nodos visibles. Sin embargo, me temo que todavía no sé de una clase de lista virtualizada de fuente abierta Ember.

Espero que ayude.

+0

Cargando el gif antes de las actualizaciones DOM de brasas no tiene ningún impacto para mí. Tampoco tiene ningún impacto en el ejemplo de JS Fiddle. – BrianB

Cuestiones relacionadas