2011-09-21 61 views
3

好了,這裏是我能找到當前癱倒在手風琴的佈局方式:如何查詢手風琴佈局當前擴大項目

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

如何以同樣的方式,我可以找到一個擴展?我看不到擴展的屬性。此外,此代碼:

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

擊碎我的瀏覽器了。

UPD:這裏是基於我的決定,對example在ExtJS的文檔:

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}」)相反。我不會低估它,因爲它提供了一些有用的信息,但如果你提供更準確的答案,它會很好。 – shabunc

+0

我更新了我的答案,你可以看到你可以查詢摺疊false。 –

2

您不必使用函數此組件查詢。

如果您的框架中有其他面板沒有摺疊,那麼query('[collapsed=false]')也會包含那些可能是您遇到的問題。

但是你可以通過調用child,而不是限制查詢只直接兒:

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

或者,你可以限制它引導孩子在選擇字符串本身,如果你給手風琴的id配置,因爲它看起來像你:(id: 'myaccordion')。您可以使用:

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

如果配置爲僅一個擴展面板手風琴在時間(默認配置),會給你一個項目的陣列 - 展開的面板。如果您有多個擴展面板,它們將分別包含在陣列中。