2011-09-21 62 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]') 

如果配置为仅一个扩展面板手风琴在时间(默认配置),会给你一个项目的阵列 - 展开的面板。如果您有多个扩展面板,它们将分别包含在阵列中。