我正在将数据传递到新窗口。我知道数据已经到了那里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();
}
任何帮助将不胜感激。 谢谢!
答案 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();
}