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:“,
描述:'消息描述'
},
初始化:函数(){
这个。添加([