Sencha touch sencha touch 2。。创建视图时访问配置值
我创建了一个这样的视图Sencha touch sencha touch 2。。创建视图时访问配置值,sencha-touch,sencha-touch-2,Sencha Touch,Sencha Touch 2,我创建了一个这样的视图 Ext.define('App.view.Message', { extend: 'Ext.Panel', alias: 'widget.message', config: { layout: 'vbox', bigText: 'big Text', smallText: 'small text', imageUrl: 'imageurl', oT: '',
Ext.define('App.view.Message', {
extend: 'Ext.Panel',
alias: 'widget.message',
config: {
layout: 'vbox',
bigText: 'big Text',
smallText: 'small text',
imageUrl: 'imageurl',
oT: '',
description: 'message description',
items: [
{
flex: 3,
xtype: 'container',
layout: 'hbox',
items: [
{
xtype: 'container',
flex: 1,
items: [
{
html: '<h3>' + this.getBigText() + '</h3>'
},
{
html: '<h5>' + this.getSmallText() + '</h5>'
}
]
},
{
xtype: 'image',
src: this.getImageUrl(),
flex: 1
}
]
},
{
flex: 6,
xtype: 'container',
layout: 'vbox',
items: [
{
flex:1,
html: '<h3>' + this.getBigText() + '</h3>'
},
{
flex:5,
html: '<p>'+this.getDescription()+'</p>'
}
]
},
{
flex: 1,
xtype: 'button',
text: this.getOT()
}
]
}
})
Ext.define('App.view.Message'{
扩展:“Ext.Panel”,
别名:“widget.message”,
配置:{
布局:“vbox”,
bigText:“大文本”,
smallText:“small text”,
imageUrl:“imageUrl”,
oT:“,
description:'消息描述',
项目:[
{
弹性:3,
xtype:'容器',
布局:“hbox”,
项目:[
{
xtype:'容器',
弹性:1,
项目:[
{
html:''+this.getBigText()
},
{
html:''+this.getSmallText()+''
}
]
},
{
xtype:'图像',
src:this.getImageUrl(),
弹性:1
}
]
},
{
弹性:6,
xtype:'容器',
布局:“vbox”,
项目:[
{
弹性:1,
html:''+this.getBigText()
},
{
弹性:5,
html:“”+this.getDescription()+“”
}
]
},
{
弹性:1,
xtype:'按钮',
text:this.getOT()
}
]
}
})
创建视图时,我需要访问创建此视图时将传递的值(配置值)。所以语句
this.getDescription()
,this.getBigText()
等正在生成错误。。
我想要的是,当我创建视图时,应该使用我传递的配置值呈现视图。我应该怎么做?为此,我建议您在初始化函数中将项目添加到视图中,如下所示:
...
config:{
...
},
initialize: function(){
var me = this;
me.callParent();
var container = Ext.create('Ext.Container',{
title = this.config.bigText
});
me.add(container);
}
...
我不知道是否有最好的解决方案,但这是可行的。为此,我建议您在初始化函数中将项目添加到视图中,如下所示:
...
config:{
...
},
initialize: function(){
var me = this;
me.callParent();
var container = Ext.create('Ext.Container',{
title = this.config.bigText
});
me.add(container);
}
...
我不知道是否有最好的解决方案,但这是可行的。Sencha Touch 2不会自动为您的配置生成getter和setter。但是,有两种方法可以满足您的需要:
- 直接通过
(与其他配置类似)获取和设置配置值Ext.getCmp('your_component_id').config.bigText
- 手动为自定义配置创建getter和setter,例如,您必须定义如下内容作为视图组件的配置:
getBigText:function(){返回this.bigText;}
setBigText:function(value){this.bigText=value;}
希望这有帮助。Sencha Touch 2不会自动为您的配置生成getter和setter。但是,有两种方法可以满足您的需要:
- 直接通过
(与其他配置类似)获取和设置配置值Ext.getCmp('your_component_id').config.bigText
- 手动为自定义配置创建getter和setter,例如,您必须定义如下内容作为视图组件的配置:
getBigText:function(){返回this.bigText;}
setBigText:function(value){this.bigText=value;}
希望这对您有所帮助。当您定义并加载“视图”文件时,请浏览每一行。此时未创建“视图”实例。因此,在那里自然找不到这个 但是,您可以在初始化函数中使用“this”。因此,您可以这样编写代码:
Ext.define('App.view.Message', {
extend: 'Ext.Panel',
xtype: 'message',
config: {
layout: 'vbox',
bigText: 'big Text',
smallText: 'small text',
imageUrl: 'imageurl',
oT: '',
description: 'message description'
},
initialize : function(){
this.add([
{
flex: 3,
xtype: 'container',
layout: 'hbox',
items: [
{
xtype: 'container',
flex: 1,
items: [
{
html: '<h3>' + this.bigText + '</h3>'
},
{
html: '<h5>' + this.smallText + '</h5>'
}
]
},
{
xtype: 'image',
src: this.imageUrl,
flex: 1
}
]
},
{
flex: 6,
xtype: 'container',
layout: 'vbox',
items: [
{
flex:1,
html: '<h3>' + this.bigText + '</h3>'
},
{
flex:5,
html: '<p>'+ this.description +'</p>'
}
]
},
{
flex: 1,
xtype: 'button',
text: this.oT
}
]);
this.callParent(arguments);
}
});
Ext.define('App.view.Message'{
扩展:“Ext.Panel”,
xtype:'消息',
配置:{
布局:“vbox”,
bigText:“大文本”,
smallText:“small text”,
imageUrl:“imageUrl”,
oT:“,
描述:'消息描述'
},
初始化:函数(){
这个。添加([
{
弹性:3,
xtype:'容器',
布局:“hbox”,
项目:[
{
xtype:'容器',
弹性:1,
项目:[
{
html:“”+this.bigText+“”
},
{
html:“”+this.smallText+“”
}
]
},
{
xtype:'图像',
src:this.imageUrl,
弹性:1
}
]
},
{
弹性:6,
xtype:'容器',
布局:“vbox”,
项目:[
{
弹性:1,
html:“”+this.bigText+“”
},
{
弹性:5,
html:“”+this.description+”'
}
]
},
{
弹性:1,
xtype:'按钮',
文本:this.oT
}
]);
this.callParent(参数);
}
});
定义并加载“视图”文件时,浏览器会浏览每一行。此时未创建“视图”实例。因此,在那里自然找不到这个
但是,您可以在初始化函数中使用“this”。因此,您可以这样编写代码:
Ext.define('App.view.Message', {
extend: 'Ext.Panel',
xtype: 'message',
config: {
layout: 'vbox',
bigText: 'big Text',
smallText: 'small text',
imageUrl: 'imageurl',
oT: '',
description: 'message description'
},
initialize : function(){
this.add([
{
flex: 3,
xtype: 'container',
layout: 'hbox',
items: [
{
xtype: 'container',
flex: 1,
items: [
{
html: '<h3>' + this.bigText + '</h3>'
},
{
html: '<h5>' + this.smallText + '</h5>'
}
]
},
{
xtype: 'image',
src: this.imageUrl,
flex: 1
}
]
},
{
flex: 6,
xtype: 'container',
layout: 'vbox',
items: [
{
flex:1,
html: '<h3>' + this.bigText + '</h3>'
},
{
flex:5,
html: '<p>'+ this.description +'</p>'
}
]
},
{
flex: 1,
xtype: 'button',
text: this.oT
}
]);
this.callParent(arguments);
}
});
Ext.define('App.view.Message'{
扩展:“Ext.Panel”,
xtype:'消息',
配置:{
布局:“vbox”,
bigText:“大文本”,
smallText:“small text”,
imageUrl:“imageUrl”,
oT:“,
描述:'消息描述'
},
初始化:函数(){
这个。添加([