我在初始化视图的一部分中声明了一个变量。当我尝试在面板中声明的函数中访问此变量时,我收到一个错误,即变量未定义。我尝试通过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
}
}
}
}]
}
});
答案 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