2012-03-23 7 views
1

Iは、動的に構成されているコントローラ/ビューのセットを有するようにそれぞれが、「セレクタ」リスト及び「コンテナ」を有するそのような容器は、別のセレクタ+コンテナの対を有することができ、。同じルートセレクタ+コンテナコントローラのインスタンスです。ComponentQueryセレクタのみ

これは、コントローラ(抽象クラ​​ス)の見出しの定義である:

Ext.define('MyApp.controller.explorer.Base', { 
    extend: 'Ext.app.Controller', 
    refs: [ 
     {ref: 'explorerContainer', selector: '[itemId="explorerContainer]'}, 
     {ref: 'explorerSelector', selector: '[itemId="explorerSelector]'} 
    ], 

事は、私はそのように私のコントローラの唯一の子要素に一致するようにComponentQueryセレクタがどうあるべきか分からないですitemId。 [itemId = "explorerContainer"]を使用してコンポーネントに一致させることで、コンポーネントツリー内の一番上のコンテナに応答するので、グローバルに行います。

私はExtJS 3で行っていましたが、myComponent.getComponent( '...')を使用して子要素にアクセスしましたが、今はgetComponent()がなく、ExtJS 4で同等のものを見つけることができませんでした。

ありがとうございます。

答えて

7

あなたの質問には、少しのコントローラが表示されます。たとえば、「マイコンの子要素」など。コントローラーはコンポーネントではなく、単にイベントのオブザーバーです。ビューは、あなたがもう少しExt.ComponentQueryクラスに慣れる必要があるなど

、子コンポーネントを持っています。あなたのアプリやデモのページでFirebugで試してみることができます。あなたはfirebug consoleを開いて、Ext.ComponentQuery.query('panel')とタイプしてください。そして、あなたが正しい表現であると思うものをpanelに置き換え、テストしてください。 Illuminations For Developersプラグインをインストールすると、ジェネリックJSオブジェクトの代わりにExtコンポーネントが返されます。これは非常に役に立ちます。 http://docs.sencha.com/ext-js/4-0/#!/api/Ext.ComponentQuery

ドキュメントは、クエリの例をいくつか持っています。あなたは ">"シンボルが直ちに子供にクエリを制限することがわかります。

これが役に立ちます。いくつかのコードを投稿しないと、セレクタの作成を手助けすることができます。私はそれの一番下にこれを見つけた

+0

はい、私はコントローラーとビューを混在させました。私はMVC(実際にはMVP)を持っていて、コントローラーとビューは常に一緒になっています。 私はComponentQueryセレクタ構文の ">"演算子を理解していますが、それはグローバルであるため動作しませんし、子供たちの深さもあらかじめ知っていません(動的に生成されたGUIだと思います)。 私のビューの構成では、セレクタ(S)とコンテナ(C)を以下のように構成することができます。 ViewPort(S、C(S、C(S、C 。 – emaringolo

+0

深さがわからない場合は、 "viewport mycontainer [property = value]"を使用してください – dbrin

+0

しかし、どのプロパティが異なるかわからない場合はどうすればよいですか?私はすべてのインスタンスにタグをつけたくないので、このSelector + Containerのペアはそれ自体について知っていて、他のものに埋め込むことができ、必要に応じて深くできるべきです。それは私がExtJS4で同じことをする方法を知らないのですが、私がSmalltalkで作業してきた共通のMVC/MVPパターンですが、私の答えは私が探していたものでした。 – emaringolo

0

読書Ext.ComponentQueryドキュメント:

を「特定のコンテナからベースのクエリに簡単にアクセスするためには、 Ext.container.Container.query Ext.containerを参照してください。 Container.downおよび Ext.container.Container.childメソッド。Ext.Component.upも参照してください。

だからExt.container.ContainerView(XTYPE:容器)はセレクタ文字列引数と一致する最初の子要素に答える子([セレクタ]を実装。

http://docs.sencha.com/ext-js/4-0/#!/api/Ext.container.Container-method-child

それは私が探していたまさにありません。

+0

確かに、上下の方法は便利です。 – dbrin

1

component.query( 'selector')を実行するだけでコンポーネントから始まるサブツリーを照会できます。

関連する問題