2012-11-02 13 views
5

Szukam sposobu na dostęp do komponentów/pól, które znajdują się w tej samej tablicy elementów, co uzyskujący dostęp lub nawet w tej samej macierzy elementów nadrzędnych (ta ostatnia jest po prostu opcja).Najlepszy sposób na uzyskanie dostępu do sąsiednich komponentów/pól

W ExtJS3 było to łatwe, po prostu definiując ref w kontenerze właściciela, ale nie znalazłem czegoś takiego w ExtJS4.

wiem, że mogę używać Ext.ComponentQuery() lub skróty up()/down() lub nawet Ext.getCmp() ale wszystkie one nie to, czego szukam, bo oni po prostu wykonuje kilka kod natomiast ref był taki łatwy sposób robić rzeczy . Tak, zdaję sobie sprawę z tego, że korzystanie z komponentu ComponentQuery jest o wiele bardziej bezpieczne w razie awarii niż użycie referencji o kodach twardych. Ale chcę tylko wiedzieć, czy są inne sposoby na zrobienie tego.

+0

Używam instrukcji cały czas w moich kontrolerach: http://docs.sencha.com/ext-js/4-1/#!/api/Ext.app.Controller-cfg-refs –

+0

Cóż, ja nie " Wspomniany kontroler powoduje, że ich nie używam. Wiem, że oni wiedzą, że mają system ref, ale to nie jest to, o czym mówię ... To nie pomogło w ogóle – sra

Odpowiedz

6

Oto kilka sztuczek, jakie stosowane:

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

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

Tutaj fieldLabel właściwość służy do zawężenia pola wyboru, ale można użyć jakiejkolwiek własności w ogóle. Jeśli więc skonstruujesz pole z właściwością ref, możesz użyć go do wybrania swojego pola podobnie, jak użyjesz go w ComponentQuery.

+0

dzięki za zaakceptowanie! Odpowiem również za odpowiedź geronimos na pierwsze. – dbrin

+0

+1 dla przykładów :) – Geronimo

+0

Dzięki! Widzieliście jsfiddle problemy? http://meta.stackexchange.com/questions/153630/why-are-answers-with-jsfiddle-net-in-body-not-ileded – dbrin

9

Alternatywnie, dla twojego przypadku uzyskania następnego elementu w pojemniku, możesz użyć nextSibling lub prevSibling. Wszystkie składniki mają te metody. Byłoby nieco mniej chodzenia po strukturze DOM. Pozwalają również na argument wyboru.

Zostały opisane w dokumentacji here.

+0

+1 i dziękuję za odpowiedź i tak to wydaje się pasować do moich potrzeb. I nawet jeśli odpowiedzi @dbrin zawierają prawie to samo, zaznaczę odpowiedź jako poprawną (wyjaśnił to wraz z przykładem), ponieważ nie mogę powiedzieć, który z was odpowiedział pierwszy. – sra

+0

+1 za bycie pierwszym – dbrin

Powiązane problemy