2017-01-11 50 views
1

我正在爲我的應用程序使用ExtJs。我做了一個窗口,我有一些領域。一個字段是窗口顯示時每次更改的名稱。 但由於我沒有破壞按鈕上的窗口,因此不要再次渲染並僅顯示以前的數據。我如何確定新的數據。如何更改文本字段值每個時間窗口顯示

我的代碼

我的表單字段中的代碼駐留在窗口

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

你盡力照顧這個窗口的_show_事​​件監聽器? – scebotari66

+0

我怎麼能做到@scebotari任何想法? 目前,我正在檢查條件,如果已經有窗戶在那裏,我正在銷燬它,並製造一個新的。但尋找新的想法 –

回答

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*/ 
    ] 
}); 
相關問題