1

我无法为字段容器内的文本字段设置值。我想为“fieldcontainer”内的“textfield”设置值和其他配置。所以基本上我设置了我从服务器接收的文本字段的配置,例如:allowBank:true,maxlength:4,值:'Hello World' 我从服务器获取并希望将其提供给里面的 textdfield我的自定义控件是 fieldcontainer。除使用内置 textConfig 的值配置外,所有其他配置均适用。下面是我的代码:

Ext.define('PTextField', { extend: 'Ext.form.FieldContainer',
            alias: 'widget.ptextfield',
            requires: ['Ext.form.TextField', 'Ext.Img'],
            width: 170,
            fieldLabel: 'Empty Label',
            labelAlign: 'top',
            layout: {
                type: 'hbox'
            },
            BLANK_IMAGE_URL: '',


            constructor: function (config) {
                this.callParent(arguments);


                Ext.apply(this.down('textfield'), this.textConfig);
                Ext.apply(this.down('image'), this.imgConfig);


            }, // eo function constructor




            initComponent: function () {
                var me = this;
                this.textBox = this.createTextField();
                this.imageBox = this.createImagefield();
                this.items = [this.imageBox, this.textBox];
                this.callParent(arguments);
            }, //eo initComponent
            createTextField: function () { return {xtype: 'textfield'} },
            createImagefield: function () { return { xtype: 'image', height: 20, width: 20} }
        });

var fname = Ext.create('PTextField', {
            fieldLabel: 'First Name',
            textConfig: { value: 'Hello World', allowBlank: false, readOnly: true,     maxLength: 4, width: 100 },
            imgConfig: { src: 'http://www.sencha.com/img/20110215-feat-html5.png' }
        });

fname.render(Ext.getBody());

我正在使用 extjs 4.1。任何帮助表示赞赏。

4

2 回答 2

1

我会将您的代码简化为:

删除整个 constructor() 函数。你不需要它。

将您的字段集的函数重写initComponent()为:

initComponent: function() {
   var me = this;

   Ext.apply(me, items: [{
      xtype: 'textfield',
      value: me.textConfig.value,
      .... 
   }, {
      xtype: 'image',
      src: me.imageConfig.src,
      ... 
   }]);
}
于 2012-08-02T12:33:58.213 回答
1

您应该使用您的配置简单地创建文本字段和图像。然后使用创建的对象定义您的 items 数组,如下所示:

initComponent: function() { 
    var me = this,
        textfield = Ext.widget('textfield', me.textConfig),
        image = Ext.widget('image', me.imgConfig);

    me.items = [textfield, image];
    me.callParent(arguments); 
},
于 2012-08-02T16:07:13.453 回答