我正在为我的应用程序使用ExtJs。我做了一个窗口,里面有一些字段。一个字段是每次窗口显示时更改的名称。 但由于我没有销毁按钮上的窗口,因此单击它不会再次渲染并仅显示以前的数据。我如何确定新数据。
我的代码
表单中的My Field代码位于窗口
中 items: [
{
xtype: 'combobox',
name: 'Assigned To',
queryMode: 'local',
store: this.getResourceStore(),
displayField: 'svmx_name',
labelAlign: 'top',
fieldLabel: 'Assigned_To',
listeners: {
scope: this,
select: function (combo, record, index) {
var form = display_form.getForm();
var id = record.getId();
form.findField('ResourceId').setValue(id);
},
afterrender: function (combo, record, index) {
console.log(this.getResourceName());
combo.setValue(this.getResourceName());
},
}
},
在窗口中设置字段。
if (!this.win) {
this.win = Ext.widget({
xtype: 'editorwindow',
resourceStore: Ext.getCmp('scheduler1').getResourceStore(),
eventStore: Ext.getCmp('scheduler1').getEventStore(),
wrapper: Ext.getCmp('scheduler1').getWrapper(),
resourceName: targetResource,
startdate: date,
targetData: dragSource.data,
});
}
this.win.show();
答案 0 :(得分:0)
我将使用config object定义一个自己的窗口类来设置所需的数据。 该框架将为您创建setter和getter函数。
Ext.define(MyFieldsWindow, {
extend: Ext.window.Window,
xtype: 'myfieldswindow',
config: {
resourceName: '',
startdate: null,
targetData: null
},
}
在更新功能中,将值设置为特定组件。
updateResourceName
函数看起来像。
updateResourceName: function (newResourceName, oldResourceName) {
var resourceNameCmp = this.getComponent('resourceName');
resourceNameCmp.setValue(newResourceName);
},
现在,您可以在创建实例时设置配置。
if (!this.win) {
this.win = Ext.create({
xtype: 'myfieldswindow',
resourceStore: Ext.getCmp('scheduler1').getResourceStore(),
eventStore: Ext.getCmp('scheduler1').getEventStore(),
wrapper: Ext.getCmp('scheduler1').getWrapper(),
resourceName: targetResource,
startdate: date,
targetData: dragSource.data,
});
}
this.win.show();
或者您可以使用setter方法在运行时设置它。
this.win.setResourceName('Roli Agrawal');
窗口类看起来像。
Ext.define(MyFieldsWindow, {
extend: Ext.window.Window,
config: {
resourceName: '',
startdate: null,
targetData: null
},
updateResourceName: function (newResourceName, oldResourceName) {
var resourceNameCmp = this.getComponent('resourceName');
resourceNameCmp.setValue(newResourceName);
},
updateStartDate: function () {/*similar code like above*/ },
updateTargetDate: function () {/*similar code like above*/ },
items: [
{
itemId: 'resourceName',
xtype: 'textfield'
},
/* additional items*/
]
});