2010-07-19 36 views

Respuesta

0

Usted puede utilizar Ext.get('boxId'). Devuelve null si el objeto no existe y devuelve un objeto Ext.Element.

El uso de getElementById probablemente sería mucho más rápido. ¿Tienes alguna objeción específica contra esto?

+0

Ext.get es una búsqueda con clave en una tabla hash, por lo que es básicamente tan rápido como getElementById (y tiene la ventaja de devolver un Ext.Element en lugar de un nodo DOM, suponiendo que ese es el objetivo final). –

+1

Eso es solo un beneficio la próxima vez que lo ejecute. La primera vez será lenta. Por otra parte, si su objetivo es la velocidad, probablemente no esté utilizando Ext JS :) – Wolph

+0

Verdadero. Hablando en términos prácticos, si estás usando Ext para empezar, no hay muchas razones para salir de su abstracción de Elemento. Y por "más rápido" todavía solo estás hablando de un milisegundo o dos en estos días. –

16

El patrón común que utilizan la mayoría de la gente es la siguiente:

var myBoxCmp = Ext.getCmp('cmpId'); 
if(myBoxCmp){ 
    myBoxCmp.doSomething(); 
} 

Lo mismo para los elementos:

var el = Ext.get('elId'); 
if(el){ 
    el.doSomething(); 
} 

También puede utilizar métodos como Container.findById, pero si usted tiene un id (suponiendo que es único, lo cual debería ser) simplemente use getCmp.

EDITAR: Han pasado varios años desde esta respuesta original, y actualmente getCmp generalmente está mal visto como code smell y normalmente debe evitarse en las aplicaciones (promueve las referencias globales, que generalmente indican un diseño deficiente cuando son necesarias). Es típicamente mejor utilizar referencias controlador (si se utiliza MVC) o los diversos métodos ComponentQuery o recipiente para hacer referencia a los componentes relacionados (por ejemplo down, child, getComponent, etc.)

+0

he definido un panel con id. ahora cuando lo agrego a una región de centro de disposición de borde, ¿cómo debo verificar si existe en la región central o no? porque también está definido ... –

0

Uso método la Ext.isEmpty (objeto).

if(Ext.isEmpty(getElementById("boxId")) { 
    alert('boxId is empty'); 
} 
3

acabo de hacerlo de la manera extjs y yo prefiero no utilizar getElemenById(), que es un método js nativa y puede causar problemas de incompatibilidad en los navegadores diffrenet:

 if (!Ext.getCmp('componentid')) { 
      alert('boxId is empty'); 
    } 
0
function openView(cid) { 
    shortName = cid.substr(cid.lastIndexOf(".")+1, cid.length); 
    if(Ext.get(shortName) == null) Ext.create(cid); 
    Ext.Viewport.setActiveItem(Ext.getCmp(shortName)); 
} 

Esta función se abre una vista como

openView('MyApp.view.Oeffnungszeiten'); 

y si la vista existe accede a la instancia antigua

Cuestiones relacionadas