如何在同一视图senchatouch中访问下面定义的函数中的视图初始化中声明的变量

时间:2013-01-25 10:34:35

标签: sencha-touch sencha-touch-2

我在初始化视图的一部分中声明了一个变量。当我尝试在面板中声明的函数中访问此变量时,我收到一个错误,即变量未定义。我尝试通过1>访问它。 this.variablename 2> viewid.variablename ....我做错了什么?

Ext.define('app.view.location', {
            extend : 'Ext.Panel',
            xtype : 'location_d',
            id : 'locdetail',
            initialize : function() {
                loc = 'abc';
            },
            config : {
                layout : {
                    type : 'card'
                },
                scrollable : true,
                fullscreen : true,
                items : [{
                            xtype : 'panel',
                            html : 'Get Dir',
                            id : 'Dir',
                            cls : 'loc',
                            listeners : {
                                tap : {
                                    element : 'element',
                                    fn : function(m) {
                                        alert(this.loc); //gives me undefined variable error
                                    }
                                }
                            }
                        }]
            }
        });

1 个答案:

答案 0 :(得分:6)

您的代码中存在一些错误。

首先,您需要在配置中添加 loc als变量。

config : {
    layout : {
        type : 'card'
    },
    loc: null,
    scrollable : true,
    ...}

然后你应该用他的二传手设置loc。

initialize : function() {
    this.setLoc("abc");
},

在您的点击监听器中,您无法使用,因为它引用内部面板而不是外部面板,使用ComponenetManager来获取外部面板。

listeners : {
    tap : {
        element : 'element',
        fn : function(m) {
            alert(Ext.ComponentManager.get("locdetail").getLoc());
        }
    }
}

我尝试了它,它没有问题!

完整代码:

Ext.define('app.view.location', {
    extend : 'Ext.Panel',
    xtype : 'location_d',
    id : 'locdetail',
    initialize : function() {
        this.setLoc("abc");
    },
    config : {
        layout : {
            type : 'card'
        },
        loc: null,
        scrollable : true,
        fullscreen : true,
        items : [{
            xtype : 'panel',
            html : 'Get Dir',
            id : 'Dir',
            cls : 'loc',
            listeners : {
                tap : {
                    element : 'element',
                    fn : function(m) {
                        alert(Ext.ComponentManager.get("locdetail").getLoc());
                    }
                }
            }
        }]
    }
});

Sencha Touch Class系统指南:http://docs.sencha.com/touch/2-1/#!/guide/class_system