기본적으로 여러 항목에서 공유되는 항목이있는 formPanel이 포함 된 창이 있습니다. formPanel의 항목이 약간 다를 수 있음을 의미합니다. (통제의 유형).ExtJS - FormPanel 항목 지우기 및 동적 새로 고침
나는 창에서 적절한 상황에 맞는 사용자 지정 단추를 동적으로 지우고 추가 할 수있었습니다.
그러나 formPanel의 항목에 약간의 문제가 있습니다.
var items = this.items;
if(items){
delete this.items;
if(Ext.isArray(items)){
this.add.apply(this, items);
}else{
this.add(items);
}
}
이 내가 달성하기 위해 노력하고있어 유사 할 것으로 보인다 :
는 소스에 파고, 나는 Ext.Container initComponent 함수 방법에 코드의 작은 조각이 있음을 발견했다. 다시 한번이 코드를 호출 할 것이다 formPanel.add 메서드를 호출 한 후 현재의 모든 항목을 삭제하고 :
는if(!this.items){
this.initItems();
}
이 모든 벌금 여기에있다. 그리고 폼의 초기로드가 완벽하게 작동합니다. 창을 숨기고 다시 열면 항목의 지우기/다시로드가 내 구성 요소에서 완벽하게 작동하지만 이전 childNodes/항목은 dom.children 및 dom.innerHTML에 계속 남아 있습니다.
그래서 my formPanel에는 값이없는 두 개 이상의 컨트롤 집합이 표시되고 하단에 새로로드 된 컨트롤에는 실제 값이 표시됩니다.
항목 지우기/추가 후에 formPanel.doLayout()을 호출합니다.
formPanel에있는 모든 항목에 대해 formPanel.remove 메소드를 호출 해 보았습니다.하지만 여전히 중복 된 표시로 끝나고 레이아웃이 제대로 고정되지 않았 음을 나타냅니다. 각 항목 아래의 가로 스크롤 막대입니다.
dom.children 및 dom.innerHTML을 실제로 지우거나 다시로드하려면 어떻게해야합니까?
도움을 주시면 감사하겠습니다.
차이점이 있으면 ExtJS 2.1을 사용하고 있습니다.
안녕하세요. 컨트롤의 새로 고침이 아닙니다.나는 그것을 닫을 때 처형되지 않는 formpanel이있는 창이 있는데, 그것은 단지 숨겨집니다. 그러나 다시 열면 formpanel의 모든 항목을 지우고 다른 컨트롤 집합을 추가하려고합니다. ReadOnly 및 편집 가능한 모드의 일종이며, 읽기 전용 및 편집 가능 모드에서 사용되는 컨트롤은 완전히 다른 유형의 컨트롤입니다. 그리고 유일한 변화는 그것에 항목이 있다면 나는 자신의 formpanels와 2 창을 선언하고 싶지 않았어. formpanel에 대한 변경 사항이 dom에 푸시되지 않아 복제됩니다. – Jabezz
Jabezz, 매우 빠른 스트로크로 창을 숨기지 않고 창을 닫으려고 했습니까? 창을 닫으면 어린이와 함께 그것을 파괴합니다. 어쨌든 여기에서 소스 코드의 압축을 풀면 편리 할 것입니다. – mxgrn