Extjs - Ext.Window:在将值传递到新窗口时遇到问题

时间:2013-08-29 13:04:36

标签: extjs window

我正在将数据传递到新窗口。我知道数据已经到了那里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();
}

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

1 个答案:

答案 0 :(得分:2)

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

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

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();
}