2010-07-19 15 views

cevap

0

Sen Ext.get('boxId') kullanabilirsiniz. Nesne yoksa ve Ext.Element nesnesini döndürdüğünde null döndürür.

getElementById kullanımı muhtemelen daha hızlı olacaktır. Buna karşı belirli bir itirazınız var mı? Elements için

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

Aynı şey:

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

Ayrıca Container.findById gibi yöntemleri kullanmak, ancak bir kimliği varsa (bunu varsayarak olabilir çoğu insan kullanmak

+0

Ext.get bir hash tablosuna yapılan anahtarlı bir aramadır, bu nedenle temelde getElementById kadar hızlıdır (ve bir DOM düğümü yerine bir Ext.Element döndürme avantajına sahiptir, bu da nihai hedef olarak kabul edilir). –

+1

Bu, bir dahaki sefere icra ettiğinizde sadece bir avantajdır. İlk kez hala yavaş olacak. Daha sonra, eğer hızınız hedefinizse, muhtemelen Ext JS :) – Wolph

+0

True kullanmıyor olabilirsiniz. Pratik olarak, eğer başlangıçta Ext'yi kullanıyorsanız, Element soyutlamasının dışına çıkmak için çok fazla sebep yoktur. Ve "daha hızlı" ile hala sadece bir milisaniyeden ya da ikiden bahsediyorsun. –

16

yaygın desen şudur olması gereken benzersizdir, sadece getCmp kullanın.

DÜZENLEME: Birkaç yıl bu orijinal cevap geçti ve günümüzde getCmp genellikle code smell olarak hoş karşılanmaz ve tipik uygulamalarda kaçınılmalıdır (genellikle gereklidir kötü tasarıma işaret küresel referanslar, teşvik). Bu kontrol başvuruları kullanmak için tipik olarak daha iyi ilgili bileşenleri (örneğin down, child, getComponent, vs.)

+0

Kimlikli bir panel tanımladım. şimdi bir sınır düzeni merkezi bölgesine eklediğimde, merkez bölgede var olup olmadığını nasıl kontrol etmeliyim? çünkü iyi tanımlanmıştır .. –

0

kullanımı Ext.isEmpty (nesne) yöntemi referans veya çeşitli ComponentQuery Konteyner yöntemleri (MVC kullanılıyorsa).

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

Ben de bunu extjs şekilde yapmak ve ben bir yerli js yöntemdir ve diffrenet tarayıcılarda uyumsuzluk sorunlarına neden olabilir getElementById() kullanmamayı tercih:

 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)); 
} 

Bu fonksiyon

openView('MyApp.view.Oeffnungszeiten'); 

gibi bir görünüm açar ve Görünüm varsa eski örneğini erişir

İlgili konular