2016-12-30 22 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(); 
関連する問題