2012-11-02 11 views
5

私はコンポーネント/フィールドにアクセスする方法を探していますが、アクセスするものと同じアイテムの配列内にあるか、同じ親アイテムの配列内にしかありません。オプション)。隣接するコンポーネント/フィールドにアクセスする最善の方法

ExtJS3では、これは単にオーナーコンテナにrefを定義するだけで簡単でしたが、ExtJS4ではそのようなものは見つかりませんでした。

refは、物事を行うには、このような簡単な方法であった、彼らは単にコードの束を実行原因、私はExt.ComponentQuery()またはショートカットup()/down()あるいはExt.getCmp()を使用することができることを知っているが、彼らは私が探しています何の全てではありません。 はい、私は、ComponentQueryの使用がハードコードされた参照の使用よりもずっと安全であるという事実を認識しています。しかし、これを行うための他の方法があるかどうかを知りたいだけです。

+0

私はコントローラで常にrefsを使用しています:http://docs.sencha.com/ext-js/4-1/#!/api/Ext.app.Controller-cfg-refs –

+0

まあ、私がそれらを使用していないコントローラの原因。私は彼らがrefシステムを持っていることを知っていることを知っているが、それは私が話しているものではありません...それはすべてで役に立たなかったので – sra

答えて

6

は、ここで私が使用しているいくつかのトリックです:

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

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

fieldLabelプロパティは、フィールドの選択を絞り込むために使用されていますが、すべてで任意のプロパティを使用することができます。したがって、プロパティrefを持つフィールドを構築する場合は、フィールドを使用してComponentQueryで使用する方法と同様のフィールドを選択することができます。

+0

!私はgeronimosの回答を最初にするように+1します。 – dbrin

+0

+1例: – Geronimo

+0

ありがとう!あなたはjsfiddleの問題を見た? http://meta.stackexchange.com/questions/153630/why-are-answers-with-jsfiddle-net-in-body-not-allowed – dbrin

9

また、コンテナ内の次の要素を取得する場合は、nextSiblingまたはprevSiblingを使用できます。すべてのコンポーネントには、これらのメソッドがあります。それは、DOM構造を少し歩いていくことになります。セレクタ引数も使用できます。

これらは、文書hereに記載されています。

+0

+1と返事のためにありがとう、これは私のニーズに合うようです。そして、たとえたとえ@dbrinの回答がほぼ同じであっても、私はあなたのどちらが最初に答えたのかを知ることができないので、彼の答えを正しいものとしてマークします(彼は例と共にそれを説明しました)。 – sra

+0

+1のために最初に受け入れるためにありがとう – dbrin

関連する問題