2012-11-02 8 views
5

Ich bin auf der Suche nach einer Möglichkeit zum Zugriff auf Komponenten/Feld, die entweder in der gleichen Elementarray wie die zugreifende oder sogar nur in einem übergeordneten Array von Elementen (der letzte ist nur ein Möglichkeit).Die beste Methode zum Zugriff auf benachbarte Komponenten/Felder

In ExtJS3 war dies durch einfache einfach, ein ref in dem Eigentümer Behälter definieren, aber ich so etwas nicht in ExtJS4 gefunden.

Ich weiß, dass ich Ext.ComponentQuery() oder die Verknüpfungen up()/down() oder sogar Ext.getCmp() verwenden, aber sie sind alle nicht, was ich suche, weil sie eine Reihe von Code ausführt nur während der ref so war eine einfache Möglichkeit, Dinge zu tun, . Ja, mir ist bewusst, dass die Verwendung einer ComponentQuery viel sicherer ist als die Verwendung fest codierter Referenzen. Aber ich möchte nur wissen, ob es andere Möglichkeiten gibt, dies zu tun.

+0

Ich verwende Refs die ganze Zeit in meinen Controllern: http://docs.sencha.com/ext-js/4-1/#!/api/Ext.app.Controller-cfg-refs –

+0

Nun, ich don ' Der erwähnte Controller, weil ich ihn nicht benutze. Ich weiß, dass sie wissen, haben ein Ref-System, aber das ist nicht, worüber ich spreche ... So hat das überhaupt nicht geholfen – sra

Antwort

6

Hier sind einige Tricks, die ich verwendet habe:

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

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

Hier fieldLabel Eigenschaft verwendet wird, Feldauswahl zu verengen, aber Sie können jede Eigenschaft verwenden. Wenn Sie also ein Feld mit einer Eigenschaft ref konstruieren, können Sie es verwenden, um Ihr Feld ähnlich wie in einer ComponentQuery zu wählen.

+0

danke für die Annahme! Ich werde +1 geronimos antwort auch für das erste sein. – dbrin

+0

+1 für Beispiele :) – Geronimo

+0

Danke! Habt ihr Jungs Probleme gesehen? http://meta.stackexchange.com/questions/153630/why-are-answers-with-jsfiddle-net-in-body-not-allowed – dbrin

9

Alternativ können Sie für den Fall, dass Sie das nächste Element in einem Container erhalten, die nextSibling oder verwenden. Alle Komponenten haben diese Methoden. Es wäre ein bisschen weniger um die DOM-Struktur herumlaufen. Sie ermöglichen auch ein Auswahlargument.

Sie sind in der Dokumentation here beschrieben.

+0

+1 und danke für die Antwort und ja, das scheint für meine Bedürfnisse zu passen. Und selbst wenn @dbrin Antworten fast das gleiche enthält, werde ich seine Antwort als richtig markieren (er hat es zusammen mit einem Beispiel erklärt), weil ich nicht sagen kann, welcher von euch zuerst geantwortet hat. – sra

+0

+1 für die erste – dbrin

Verwandte Themen