1

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

如果您查看文档

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

在事件下,没有点击事件。

我想我看到了类似的东西

ondblclick

进而

fn: function(){...}

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

4

2 回答 2

2

以下示例将起作用。双击事件将由Ext.Element触发,该元素可以在从面板的 body 参数渲染后获取。在示例中,我重写了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()
});
于 2012-11-16T12:29:47.463 回答
2

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

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

演示

于 2012-11-16T13:06:22.327 回答