Extjs4 Ext.define和handler范围

Extjs4 Ext.define和handler范围,extjs4,Extjs4,我的问题和你的完全一样,不幸的是,这个问题没有明确的答案 我知道作用域:这个不起作用,因为它只会将作用域从按钮更改为窗口,根据我的搜索和线程中给出的建议,我得出结论,唯一的解决方案是 扩展网格面板时定义别名 使用this.up('alias')遍历DOM以获取网格面板 这真的是唯一的解决办法吗?谢谢。是的。组件中处理程序中的作用域通常是调用其处理程序的实例化组件。tbar中的按钮实际上是一个组件,其实例化形式成为作用域。你应该像你说的那样移动到你的面板以得到你想要的对象。是。组件中处理程序中的作

我的问题和你的完全一样,不幸的是,这个问题没有明确的答案

我知道
作用域:这个
不起作用,因为它只会将作用域从按钮更改为窗口,根据我的搜索和线程中给出的建议,我得出结论,唯一的解决方案是

  • 扩展网格面板时定义别名
  • 使用
    this.up('alias')
    遍历DOM以获取网格面板

  • 这真的是唯一的解决办法吗?谢谢。

    是的。组件中处理程序中的作用域通常是调用其处理程序的实例化组件。tbar中的按钮实际上是一个组件,其实例化形式成为作用域。你应该像你说的那样移动到你的面板以得到你想要的对象。

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

    根据文章中的示例,试试这个

    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();
                }
            }
        ],
    }
    

    根据文章中的例子,试试这个

    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();
                }
            }
        ],
    }