javascript - arriba() y abajo() versus Ext.getCmp()
extjs extjs4 (2)
Estoy muy confundido sobre cuál necesito usar para el objeto grep entre up () down () y Ext.getCmp (ID).
Para mí, es más fácil definir ID para objetar y recuperar el objeto mediante Ext.getCmp (''ID'') y el código parece más limpio.
Por ejemplo:
console.log(this.up(''panel'').up(''panel'').down(''grid''));
console.log(Ext.getCmp(''myPanel''));
cuál es mejor para el rendimiento?
Hay problemas graves con el uso de ID y getCmp para encontrar sus componentes. El problema principal es que no puede reutilizar el componente de forma segura porque en la mayoría de los casos el marcado creará elementos HTML con ID duplicados, que es HTML no válido. Además, cuando tiene dos componentes con el mismo ID, se encontrará con un comportamiento inesperado que es difícil de rastrear porque el marco no obtendrá una referencia correcta de sus componentes.
Hay varias publicaciones en blogs y foros sobre esto, así como un video de J. Garcia sobre este tema. La forma sugerida para usar getCmp es solo para la depuración, cambiando a otros métodos (arriba, abajo, itemId , itemId y ComponentQuery ) para el código de producción lista.
Ext.getCmp()
utiliza un mapa hash internamente, por lo que se ilumina rápidamente, casi tan rápido como recuperar el valor en una matriz basada en una clave.
.up()
y down()
se implementan mediante un recorrido de la jerarquía de componentes, que es un proceso más lento.
Pero up()
y down()
utilizan selectores, por lo que también pueden seleccionar clases, no solo identificadores.
Solo necesita recordar que existen varias situaciones en las que es posible que desee usar up()
o down()
, como cuando hay un controlador común para una multitud de controles, o cuando el componente que está buscando se generó automáticamente por el marco así que no puedes darle una identificación tú mismo.