首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ExtJs 6-7手风琴面板单击项目上的事件

ExtJs 6-7手风琴面板单击项目上的事件
EN

Stack Overflow用户
提问于 2022-08-17 08:31:48
回答 2查看 58关注 0票数 0

如何捕捉手风琴面板中项目的单击事件?我尝试了与文档不同的选项,但都没有用。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-08-19 17:14:27

最后,我自己解决了这个问题。对于现代接口,将设置默认面板,并且必须在其中定义侦听器。

代码语言:javascript
复制
defaults: {
                titleCollapse: true,
                xtype: 'panel',
                animate: true,
                bodyPadding: 2,
                listeners: {
                    expand: function (panel, eOpts) {
                        console.log(panel.getTitle() + ' expanded.');
                    },
                    collapse: function (panel, eOpts) {
                        console.log(panel.getTitle() + ' collapsed.');
                    }

                }

票数 0
EN

Stack Overflow用户

发布于 2022-08-17 13:10:45

你有两个选择:

  1. expand / collapse侦听器添加到手风琴面板中的面板组件中,这样会更容易,但它并不是确切地侦听单击事件,而是侦听面板的状态。如果使用动画,也会延迟一些,因为这些事件是在动画完成时触发的。
  2. click侦听器添加到面板的标题中。这正是您所要求的,但是有一个缺点:这样您就可以覆盖默认的展开/折叠行为,并且需要处理展开/折叠面板。

下面的代码为您提供了两个示例,在ExtJS7.5.1经典材料中。请参阅小提琴在这里,您可以跟踪控制台中事件的触发。

代码语言:javascript
复制
Ext.application({
    name: 'Fiddle',
    launch: function () {
        Ext.create('Ext.panel.Panel', {
            title: 'Accordion Panel',
            width: 400,
            height: 400,
            layout: {
                type: 'accordion',
                titleCollapse: true,
                animate: true,
                multi: true //false
            },
            defaults: {
                collapsed: true,
                // listen to click event on header
                header: {
                    listeners: {
                        click: function (header, e, eOpts ) {
                            const panel = header.up('panel');
                            console.log (panel.getTitle() + ' header clicked.');
                            if (panel.collapsed) {
                                panel.expand();
                            }
                            else {
                                panel.collapse();
                            }
                        }
                    }
                },
                // listen to panel expand / collapse in accordion panel
                listeners: {
                    expand: function (panel, eOpts) {
                        console.log(panel.getTitle() + ' expanded.');
                    },
                    collapse: function (panel, eOpts) {
                        console.log(panel.getTitle() + ' collapsed.');
                    }
                }
            },
            items: [{
                title: 'Panel 1',
                html: 'Content 1',
            }, {
                title: 'Panel 2',
                html: 'Content 2',
            }, {
                title: 'Panel 3',
                html: 'Content 3',
            }],
            renderTo: Ext.getBody(),
        });
    }
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73385257

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档