0

目前我正在使用 extjs 3.4,我遇到了以下问题。我在构造器中创建一个 GridPanel 我设置了一个名为“bla”的变量名,在我设置了这个属性后,值为“test2”我提醒它以确保它被正确设置。这行得通!但是,当在我的网格面板中按下按钮时,它无法再读取 bla 属性并显示其“未定义”。

我跳过了对问题没有意义的代码部分;)

请参阅下面的代码

    Ext.define('SC.view.WorkOrderHourGrid' ,{

    extend: 'Ext.grid.GridPanel',

    bla:"test",
    tbar: null,

    store:null,
    plugins:null,

    //Methods


    constructor:function(p_Store,config){
        this.tbar = this.buildTbar();
        this.bla = " test2";
        this.store = p_Store;

        //alerting bla attribute outputs test 2 !!
        alert(this.bla);


        var rowEditor = new Ext.ux.grid.RowEditor({
            saveText: 'Update'
        });

        this.plugins = [rowEditor];


        SC.view.WorkOrderHourGrid.superclass.constructor.call(this,config);
    },
    buildTbar:function()
    {
        return [{
            text: 'Toevoegen',
            handler: function(){
                tryOut();
            },
            //the button i was talking about
            handler:this.onAdd


        }];
    },
    onAdd:function(btn, ev)
    {
        //this outputs undefined !!!
        alert(this.bla);
    }


});
4

1 回答 1

0

onAdd函数的作用域是按钮。这就是为什么 bla未定义的原因。

尝试像这样更改您的 buildTbar 函数:

buildTbar:function()
{
    return [{
        text: 'Toevoegen',
        scope: this,
        //the button i was talking about
        handler:this.onAdd


    }];
},

我没有测试过!:)

于 2013-09-07T11:14:42.730 回答