Ext.define和处理程序范围

时间:2012-06-29 11:18:06

标签: extjs4

我遇到了与http://www.sencha.com/forum/showthread.php?140992-Ext.define-and-the-Scope完全相同的问题,遗憾的是线程上没有明确的答案。

我知道scope:this无效,因为它只会将范围从按钮更改为窗口,并根据我的搜索和线程上的建议,我得出结论,唯一的解决方案是

  1. 在扩展网格面板时定义别名。
  2. 使用this.up('alias')遍历DOM以获取网格面板。
  3. 真的是唯一的解决方案吗?感谢。

2 个答案:

答案 0 :(得分:2)

根据帖子中的示例,试试这个......

initComponent: function() {

    ...
    var me = this;

    me.tbar = [
        {
            text: 'Start',
            iconCls: 'icon-start'
        }, {
            text: 'Stop',
            iconCls: 'icon-stop'
        }, {
            text: 'Eintrag hinzufügen',
            iconCls: 'icon-add',
            scope: me,
            handler: function() {
                me.addEntry();
            }
        }
    ],
}

答案 1 :(得分:1)

是。组件中处理程序的范围通常是调用其处理程序的实例化组件。 tbar中的那个按钮实际上是一个组件,其实例化的表单成为范围。你应该像你说要获得你想要的对象一样遍历你的面板。