2016-12-30 103 views
1

我正面臨向動態添加文本區域到容器的問題。將文本區域動態添加到容器extjs

容器的初始創建:

xtype: 'container', 
    layout: 'form', 
    width: 400, 
    ref: 'form', 
    layoutConfig: { 
     labelSeparator: ' ', 
     trackLabels: true 
    }, 
    items: [{ 
     xtype: 'textarea', 
     value: 'test', 
     fieldLabel: 'label', 
     anchor: '100%', 
     submitValue: false, 
     readOnly: true, 
     ref: '../field_1', 
     id: 'field_1' 
    }] 
} 

動態代碼:

for (i = 4; i < obj.length; i++) { 
    var id = i + 12; 
    id = 'field_' + id; 
    var field = newTextArea(id); 
    field.setValue(obj[i].value); 
    field.setVisible(true); 
    this.form.add(field); 
} 

函數來創建文本區:

function newTextArea(id) { 
    var text_Area = new Ext.form.TextArea({ 
     fieldLabel: 'Test', 
     height: 30, 
     width: 250, 
     submitValue: false, 
     readOnly: true, 
     autoScroll: true, 
     id: id 
    }); 
    return text_Area; 
} 

問題:

當我調試,看看形成,表單項中添加了textarea,但未在瀏覽器中顯示。有人可以建議做什麼?

問候,

拉吉

+0

動態代碼在哪裏和在哪個範圍內執行?不確定「this.form」是引用容器的正確方法.. – scebotari66

+0

@scebotari動態代碼被執行的形式作用域,如果我使用呈現:true,EL是未定義錯誤即將到來。 – user1770589

+0

檢查這個簡單的小提琴 - https://fiddle.sencha.com/#view/editor&fiddle/1ne5。不知道你的代碼有什麼問題,你沒有提到什麼是'obj',我認爲'this.form'是對容器的錯誤引用。我認爲你可以使用'Ext.ComponentQuery.query'或類似的東西(比如用於查詢組件的'up'和'down'方法)。 –

回答

0

檢查這個simple fiddle

不知道你的代碼有什麼問題,你沒有提及什麼是obj,我認爲this.form是對容器的錯誤引用。我認爲你可以使用Ext.ComponentQuery.query或類似的東西(例如updown方法queryable組件)。

0

在extjs 3.x中,將項目添加到容器後必須調用doLayout

for (i = 4; i < obj.length; i++) { 
    var id = i + 12; 
    id = 'field_' + id; 
    var field = newTextArea(id); 
    field.setValue(obj[i].value); 
    field.setVisible(true); 
    this.form.add(field); 
} 

this.form.doLayout();