1

我有一个包含以下项目的面板:

{
    xtype: 'numberfield',
    id: 'articleFastSearch',
    listeners: {
        scope: this,
        specialkey: function(field, e) {                            
            if (e.getKey() == Ext.EventObject.ENTER) {
                var val = this.rawValue;
                // Do stuff with val
            }
        }
    }
},
{
    id: 'articleFastSearchBtn',
    text: 'Open article',
    scope: this,
    handler: function(btn) {
        console.log(Ext.get("articleFastSearch"));
        var val = Ext.get("articleFastSearch").getValue();
        console.log(val);
        // Do stuff with val
    }
}

numberfield 上的侦听器工作正常,但我无法从按钮处理程序访问 numberfield 值。我尝试命名数字字段并使用this.articleFastSearch.getValue(),但它没有用。我认为范围可能是错误的?

然后我求助于给 numberfield 一个 id 并尝试通过 dom 访问它,如上所示。这给出了一个奇怪的结果,因为返回的构造函数实际上包含一个HTMLTableElement而不是一个数字字段。我在属性中找不到值,所以我很困惑......页面上没有其他具有相同 ID 的元素。有任何想法吗?

理想情况下,如果可能的话,我宁愿只通过this变量访问值,但我会满足于任何可行的解决方案!

4

1 回答 1

1

Ext.get()返回一个Ext.Element。您正在寻找的是Ext.getCmp()您还应该考虑使用新的Ext.ComponentQuery,它也可用作从Ext.container.AbstractContainer继承的所有类中的快捷方式。

于 2012-09-05T08:37:53.953 回答