0

我正在将数据传递到一个新窗口。我知道数据正在到达那里 b/c 我可以在它到达 show() 之前在调试器中看到它。新窗口上有表单字段,它们没有被传入的值填充。我还尝试了您将在其中看到的 afterrender 方法,但它甚至没有看到我的组件。窗口弹出并呈现良好。但是什么都没有。

这就是我正在做的事情:

initComponent: function() { 
   var me = this;
    Ext.applyIf(me, {
        items: [
        {
            xtype: 'form',
            padding : 5,
            itemId: '',
            title: 'form',
            layout  : {
              type    : 'table',
              columns : 3
            },
            defaults : {
              padding : 5
            },
            items: [
            {
                xtype : 'hiddenfield',
                value : this.aId,
                name : 'announcementId',
                id : 'announcementId',
                text: 'Id',
                width: 1,
                hidden: true,
                colspan : 3
            },
            {
                xtype: 'textareafield',
                grow: false,
                width : 650,
                name: 'announcement',
                id: 'announcement',
                fieldLabel: bundle.getMsg('adminform.label.message'),
                anchor: '100%',
                // This does not populate.
                value : this.message,
                colspan : 3
            },
...
...
            }],
            listeners : {
              afterRender : function() {
                debugger;
                // Could not find the component.
                Ext.getCmp('announcement').value = this.message;
              }
            },
            viewConfig: {
              border: true,
              enableTextSelection: true
            }
        }
    ]
    });
    me.callParent(arguments);
},

// This method does go off.
showWithData : function(aId, message, start, end, active) {
  debugger;
  this.aId = aId;
  this.message = message;
  this.start = start;
  this.end = end;
  this.active = active;
  this.show();
}

任何帮助,将不胜感激。谢谢!

4

1 回答 1

2

initComponent只调用一次,也就是创建组件的时候。那是在您设置所有属性之前...

您应该使用 formsetValues方法来更新表单的数据。所以你的方法应该是这样的:

showWithData : function(aId, message, start, end, active) {
    var formPanel = this.down('form'), // get a ref to the FormPanel component
        form = formPanel.getForm();

    form.setValues({
        announcementId: aId,
        announcement: message,
        ...
    });

    this.show();
}
于 2013-08-29T13:13:16.347 回答