2012-09-03 57 views
1

我在選項卡中有表單。它是第二個選項卡,因此它在打開它之前不會呈現。將值設置爲尚未呈現的表單

我試圖將數據提交到Ext.getCmp('DetailsForm').getForm().setValues(selections[0]);的表單,但它表示它不是一個函數。可能因爲它尚未呈現。我必須做什麼?

+0

Tabpanel的[docs](http://docs.sencha.com/ext-js/4-1/#!/api/Ext.tab.Panel-cfg-items)明確提到懶惰的渲染問題,關於doLayout(),但我懷疑它會解決你的問題。我有一個系統,在屏幕左側選擇的記錄需要加載到右側的各個標籤。每當選擇記錄時,我都會引用它,並且每當我的tabpanel發射'activate'時,我都會引用該記錄。 – Izhaki

+1

@Izhaki你應該看看[deferredRender](http://docs.sencha.com/ext-js/4-1/#!/api/Ext.tab.Panel-cfg-deferredRender)屬性。 – sra

回答

3

設置你的Ext.tab.Panel的deferredRender配置屬性deferredRender: false

這將迫使所有的標籤,而不是隻活躍的的渲染。現在表格將在那裏。如前所述,我建議你也使用myTabPanelRef.down('from')。getForm()。setValues(selections [0]);訪問表單。

0

訂閱第二接線片show事件或事件painted
然後查找形式優選通過使用.down()方法,因爲這不會看起來與在整個DOM。 設置值

0

使用呈現表單面板事件。 您的代碼將是這樣的 -

Ext.getCmp('DetailsForm').on('render', function(){ this.getForm().load(selections[0]); });