2011-09-21 19 views
3

OKアコーディオンレイアウト内の現在の拡大の項目を照会するために、私は、現在はアコーディオンのレイアウトで倒れ見つけることができる方法です。は、どのように、ここで、

Ext.getCmp("myaccordion").query("{collapsed}") 

どのように同じように私が展開見つけることができます一つは?私は拡張プロパティを見ることができません。さらに、このコード:

Ext.getCmp("myaccordion").query("not:{collapsed}") 

私のブラウザをクラッシュさせます。

UPD:ここはExtJSのドキュメントでexampleに基づいて、私の決断です:

Ext.ComponentQuery.pseudos.expanded = function(items) { 
    var res = []; 
    for (var i = 0, l = items.length; i < l; i++) { 
     if (!items[i].collapsed) { 
      res.push(items[i]); 
     } 
    } 
    return res; 
    }; 

そして私はちょうどこのようにExt.getCmp("myaccordion").query(">*:expanded")

を照会しかし、我々はそれを短くすることができ、何とか:notを使用していますか?あなたが行うことができ

答えて

1

Ext.onReady(function(){ 

    var p1 = Ext.create('Ext.panel.Panel', { 
     renderTo: document.body, 
     width: 100, 
     height: 100, 
     title: 'Foo', 
     collapsed: true 
    }); 

    var p2 = Ext.create('Ext.panel.Panel', { 
     renderTo: document.body, 
     width: 100, 
     height: 100, 
     title: 'Foo', 
     collapsed: false 
    }); 

    console.log(Ext.ComponentQuery.query('[collapsed=false]')); 

}); 
+0

は私にとっては機能しません。これは何かを返しますが、foo.query( "{collapsed}")の反対ではありません。それにもかかわらず、いくつかの有益な情報を提供していますので、私はそれをdownvoteしませんが、より正確な答えを提供するといいです。 – shabunc

+0

私は自分の答えを更新した、あなたは虚偽の崩壊を照会できることがわかります。 –

2

あなたは、このコンポーネントのクエリのための機能を使用する必要はありません。

フレームワークのどこかに折りたたまれていない他のパネルがある場合は、query('[collapsed=false]')にも含まれているので、おそらく問題があります。

しかし、あなたが代わりにchildを呼び出すことによってのみ、直接子供たちにクエリを制限することができます。

Ext.getCmp("myaccordion").child("[collapsed=false]"); 

それとも、アコーディオンにid設定を与える場合は、セレクタ文字列自体に直接子どもたちにそれを制限することができますが、あなたのように見えます:(id: 'myaccordion')。あなたは使用することができます。

Ext.ComponentQuery.query('#myaccordion > panel[collapsed=false]') 

使用すると、1つのアイテムであなたの配列を与える時間(デフォルト設定)でのみ展開さパネル用に設定アコーディオンを持っている場合 - 拡大パネル。拡張パネルが複数ある場合は、それぞれが配列に含まれます。

関連する問題