【问题标题】:simple keypress doesn't fire any listener简单的按键不会触发任何监听器
【发布时间】:2014-01-01 08:44:34
【问题描述】:

一个简单的煎茶新手问题,让我困惑了一段时间。我正在尝试在按键上触发事件。我希望将事件绑定在 TextField 上。我创建了一个小提琴

http://jsfiddle.net/CjyFt/1/

initComponent: function() {
    this.on('click', function() {
        console.log('Clicked'); // doesn't fire either
    });        
}

如果担心的话,我已经分别尝试过它们......

...        
enableKeyEvents: true,
listeners : {
    scope: this,
    'keypress' : function(textfield, e) {
        console.log('lovely'); // doesn't fire
    }
}
...

我已经尝试将侦听器放置在每个父类中,并且我尝试绑定不同的事件而没有任何一个起作用,有人可以看看它是否很明显吗?

【问题讨论】:

    标签: extjs listener


    【解决方案1】:

    keypress 事件(以及相关的配置选项enableKeyEvents)在Ext.form.field.Text 中定义,但是您正在从Ext.form.field.Base 扩展您的类Ext.form.CustomField,这是Ext.form.field.Text 的父类因此没有这个事件(见class hierarchy)。

    我已经更新了你的小提琴,它工作正常:http://jsfiddle.net/CjyFt/2/

    我刚刚改了这个:

    Ext.define('Ext.form.CustomField', {
        extend: 'Ext.form.field.Text', // instead of Ext.form.field.Base
    ...
    

    按钮上的点击事件已经为我工作了,所以我认为这没有问题。

    【讨论】:

    • 啊!谢谢,现在我知道为什么它不起作用了,这很有意义。在我的辩护中,我应该如何知道enableKeyEvents 的定义位置? :(
    • 您可以在docs 中看到它。在每个属性、函数或事件的右侧,显示定义它的类。另外,在Ext.form.field.Base 你不会找到这个配置。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-28
    • 1970-01-01
    • 1970-01-01
    • 2014-03-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多