2010-01-22 20 views
6

Tengo una pregunta sobre el rendimiento, la confiabilidad y el método de mejores prácticas para usar el método de actualización Extjs, versus actualizar directamente el HTML interno de la dom de un elemento Ext.Pregunta usando la actualización de Ext() en lugar de dom.innerHTML

Considerar las dos afirmaciones:

Ext.fly('element-id').dom.innerHTML = 'Welcome, Dude!'; 

y

Ext.fly('element.id').update('Welcome, Dude!', false); 

no necesito a eval() cualquier secuencia de comandos, y estoy seguro de que update() toma en consideración cualquier peculiaridades del navegador.


Además, ¿alguien sabe si se utiliza:

Ext.fly('element-id').dom.innerHTML 

es lo mismo que

d.getElementById('element-id').innerHTML 

?
La compatibilidad del navegador y la plataforma son importantes, y si las dos son básicamente las mismas, abandonar Ext.element.dom.innerHTML en total para update() sería probablemente mi mejor solución.

Gracias de antemano por su ayuda,

Brian

Respuesta

4

Si no necesita cargar scripts de forma dinámica en su html actualizada o procesar una devolución de llamada después de la actualización, a continuación, los dos métodos que he descrito son equivalente. La mayor parte del código en update() agrega la carga de scripts y las capacidades de devolución de llamada. Internamente, simplemente establece el innerHTML para hacer el reemplazo del contenido.

Ext.fly().dom devuelve un nodo DOM simple, por lo que sí, es equivalente al resultado de getElementById() en términos del nodo al que apunta. La única sutileza para entender es la diferencia entre Ext.fly() y Ext.get(). Ext.fly() devuelve una instancia compartida del objeto contenedor del nodo (un peso mosca). Como tal, esa instancia más tarde podría apuntar a un nodo diferente detrás de las escenas si cualquier otro código llama a Ext.fly(), incluido el código Ext interno. Como tal, el resultado de una llamada a Ext.fly() solo debe usarse para operaciones atómicas y no reutilizarse como un objeto de larga duración. Ext.get().dom por el contrario devuelve una nueva instancia de objeto único, y en ese sentido, sería más como getElementById().

+0

Por así decirlo, a menos que desee procesar una devolución de llamada o evaluar algunos scripts, usar 'update()' es más o menos exagerado. ¿Lo estoy entendiendo correctamente? Mi principal preocupación es la compatibilidad del navegador. Entonces, en esos términos, 'update()' tiene alguna ventaja sobre 'Ext.fly(). Dom'? ¡Gracias! – DondeEstaMiCulo

+0

No hace la diferencia. No es excesivo, es exactamente lo mismo. No hay diferencia en compatibilidad. –

2

Creo que respondió su propia pregunta: "La compatibilidad del navegador y la plataforma son importantes, y si las dos son básicamente las mismas, abandonar Ext.element.dom.innerHTML en conjunto para la actualización() probablemente sea mi mejor solución " Las bibliotecas JS están destinadas (en parte) a diferencias abstractas del navegador; la actualización es un ejemplo.

@bmoeskau escribió lo anterior, la actualización() proporciona una funcionalidad adicional que no necesita para su problema actual. Sin embargo, la actualización es una buena opción.

Cuestiones relacionadas