2012-11-02 20 views
5

Sto cercando un modo per accedere a componenti/campi che si trovano nello stesso array di elementi di quello di accesso o anche solo in uno stesso array di articoli padre (l'ultimo è solo un opzione).Il modo migliore per accedere a componenti/campi adiacenti

In ExtJS3 questo è stato facile semplicemente definendo uno ref nel contenitore del proprietario ma non ho trovato nulla di simile in ExtJS4.

So che posso usare Ext.ComponentQuery() o le scorciatoie up()/down() o anche Ext.getCmp() ma sono tutti non è quello che sto cercando, causa che esegue solo un mucchio di codice, mentre il ref era un modo semplice per fare le cose . Sì, sono consapevole del fatto che l'utilizzo di ComponentQuery è molto più sicuro rispetto all'uso di riferimenti codificati. Ma voglio solo sapere se ci sono altri modi per farlo.

+0

Io uso sempre i refs nei miei controller: http://docs.sencha.com/ext-js/4-1/#!/api/Ext.app.Controller-cfg-refs –

+0

Beh, io non Ho menzionato Controller causa che non li uso. So che sanno di avere un sistema ref, ma non è quello di cui sto parlando ... Quindi non è stato di alcun aiuto – sra

risposta

6

Ecco alcuni trucchi che ho usato:

//lookup by name 
formPanel.getForm().findField('state'); 

//lookup using nextSibling/prevSibling in a fieldset or fieldcontainer 
myField.ownerCt.nextSibling('textfield[fieldLabel=Description]') 

Qui fieldLabel proprietà viene utilizzata per restringere la selezione campo, ma è possibile utilizzare qualsiasi proprietà a tutti. Quindi, se si costruisce un campo con una proprietà ref, è possibile utilizzarlo per selezionare il campo in modo simile a come lo si utilizzerà in un ComponentQuery.

+0

grazie per aver accettato! Aggiungerò +1 alla risposta geronimica per essere il primo. – dbrin

+0

+1 per esempi :) – Geronimo

+0

Grazie! Ragazzi avete visto problemi di jsfiddle? http://meta.stackexchange.com/questions/153630/why-are-answers-with-jsfiddle-net-inbody-not-allowed – dbrin

9

In alternativa, per il tuo caso di ottenere l'elemento successivo in un contenitore, puoi utilizzare nextSibling o prevSibling. Tutti i componenti hanno questi metodi. Sarebbe un po 'meno camminare intorno alla struttura del DOM. Consentono anche un argomento di selezione.

Sono descritti nei documenti here.

+0

+1 e grazie per la risposta e sì questo sembra essere adatto alle mie esigenze. E anche se le risposte di @brin contengono quasi la stessa, segnerò la sua risposta come corretta (l'ha spiegata con un esempio) perché non posso dire quale di voi ha risposto per prima. – sra

+0

+1 per essere il primo – dbrin

Problemi correlati