在Panel上双击事件

时间:2012-11-16 09:45:37

标签: javascript extjs extjs4 extjs4.1

我在一些源代码(几天前)中看到一个程序在面板上发生了dblclick事件或类似事件。

如果您查看文档

http://docs.sencha.com/ext-js/4-1/#!/api/Ext.panel.Panel

在活动中,没有点击的活动。

我想我看到了像

这样的东西
ondblclick

然后

fn: function(){...}

为什么它不在文档中?如何在面板上触发dblclick事件?

2 个答案:

答案 0 :(得分:2)

以下示例将起作用。 double click event 会被 Ext.Element 触发,可以在从面板的正文参数渲染后获取。在示例中,我覆盖了 afterRender 方法,因为无需为此注册事件。在那里,我向当前面板的Ext.Element注册了一个监听器。

Ext.define('Ext.ux.panel.DCPanel', {
    extend: 'Ext.panel.Panel',
    alias: 'widget.dcpanel',
    initComponent: function() {

        this.callParent(arguments);
    },
    afterRender: function() {
        var me = this;
        me.body.on('dblclick', function() { alert('hit'); }, me);
        me.callParent();
    }
});

Ext.create('Ext.ux.panel.DCPanel', {
    width: 300,
    height: 300,
    title: 'Demo',
    html: 'this is my data',
    renderTo: Ext.getBody()
});

答案 1 :(得分:2)

除了@sra回答之外,我会说在分配监听器时可以使用Component选项将处理程序分配给element的dom:

var panel = Ext.create('Ext.panel.Panel', {
    // ...
    listeners: {
        dblclick: function() {
            // handle event
        },
        element: 'body'
    }
});

demo