如何查询手风琴布局中当前展开的项目

发布于 2024-12-06 02:21:04 字数 818 浏览 1 评论 0 原文

好的,这是我可以在手风琴布局中找到当前折叠的方式:

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

如何以同样的方式找到展开的布局?我看不到扩展的财产。此外,这段代码:

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

破坏了我的浏览器。

UPD:这是我的决定,基于示例

 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")

但我们可以这样做吗它更短,使用:不不知何故?

OK, so here is the way I can find current collapsed in accordion layout:

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

How in the same manner I can find expanded one? I can't see expanded property. Moreover, this code:

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

crushes my browser down.

UPD: here is my decision, based on example in ExtJS docs:

 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;
   };

And then I just query this way Ext.getCmp("myaccordion").query(">*:expanded")

But can we make it shorter, using :not somehow?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

爱本泡沫多脆弱 2024-12-13 02:21:04

您不必为此组件查询使用函数。

如果您的框架中的某个位置有其他未折叠的面板 query('[collapsed=false]') 也会包含这些面板,因此这可能是您遇到的问题。

但是您可以通过调用 child 将查询限制为仅直接子级:

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

或者,如果您为手风琴提供 ,则可以将其限制为选择器字符串本身中的直接子级>id 配置,就像您所做的那样:(id: 'myaccordion')。您可以使用:

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

如果您一次只为一个扩展面板配置了手风琴(默认配置),那么将为您提供一个包含一项的数组 - 扩展面板。如果您有多个展开面板,它们将分别包含在数组中。

You don't have to use a function for this component query.

If you have other panels somewhere in your framework that are not collapsed query('[collapsed=false]') would also include those so that was probably the problem you were having.

But you can limit the query to only direct children by calling child instead:

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

Or you can limit it to direct children in the selector string itself if you give the accordion an id config, as it looks like you did: (id: 'myaccordion'). You can use:

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

If you have the accordion configured for only one expanded panel at a time (the default config) that will give you an array with one item - the expanded panel. If you have more than one expanded panel they will each be contained in the array.

腻橙味 2024-12-13 02:21:04

你可以这样做:

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]'));

});

You could do:

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]'));

});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文