指的是不在范围内的变量

时间:2015-05-22 09:35:05

标签: javascript jquery extjs scope

我有这样的结构:

{
    ....
    initComponent : function () {
        ....
        this.appCombo = Ext.create('Ext.form.field.ComboBox', {
            ....
            listeners : {
                // Use 'data' here
            }
        }
    },
    load : function () {
        var data = ....
    }
}

我希望使用我提到的数据,但“data is undefined”错误会继续弹出。请告知如何在我指定的地方访问“数据”变量。

3 个答案:

答案 0 :(得分:1)

我不确定您使用的是哪个版本。但是你应该能够添加一个配置属性 - 然后Ext会自动为这个配置生成getter和setter。只需确保loa​​d方法在尝试在侦听器中访问数据之前设置了数据。

{
    config: {
        data: null
    }
    ....
    initComponent : function () {
        var me = this;
        ....
        this.appCombo = Ext.create('Ext.form.field.ComboBox', {
            ....
            listeners : {
                ....me.getData(); // returns the data if it has been set already
            }
        }
    },
    load : function () {
        var me = this;
        me.setData(...);
    }
}

答案 1 :(得分:1)

data : null,
initComponent : function () {
    var me = this;
    this.appCombo = Ext.create('Ext.form.field.ComboBox', {
        ....
        listeners : {
            // Use 'data' here
            me.data = "FOO"
        }
    }
},
load : function () {
    this.data = ....
}

答案 2 :(得分:1)

在对象中添加一个vars对象(不要将其公开到全局范围),这将保存您的变量。

{
    vars : {
        data : null
    },

    initComponent : function () {
        var self = this;
        this.appCombo = Ext.create('Ext.form.field.ComboBox', {
            listeners : {
                alert(self.vars.data);
            }
        }
    },

    load : function () {
        this.vars.data = 'Hello';
        this.initComponent();
    }
}