2016-12-30 15 views
1

동적으로 컨테이너에 텍스트 영역을 추가하는 데 문제가 있습니다.컨테이너 extj에 동적으로 텍스트 영역 추가

용기

초기 생성 :

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 또는 이와 비슷한 것을 사용할 수 있다고 생각한다. (예 : queryable 구성 요소의 경우 updown 방법).

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();