2012-11-09 5 views
1

내가 가진 패널을 만들 실패!DOM에서 제거 후 다시 패널을 추가하면

는 그럼 난 add()를 통해 내 DOM에 oMainView을 추가

// Div to put it in 
var oWindowDiv = Ext.get(strStartDiv); 
// Container to hold it 
var oContainer = Ext.create('Ext.container.Container', { 
     id  : 'findMe', 
     layout : 'fit', 
     renderTo : oWindowDiv, 
     autoRender: true 
     }); 
oContainer.add(oMainView); 

나중에 다음, 우리의 프레임 워크를 최소화하는 모든 div를 삭제합니다. 페이지 새로 고침 없음 따라서 극대화하려면 동일한 방식으로 저장 한 oMainView을 추가하고 싶습니다.

FF와 Chrome에서 완벽하게 작동합니다. 그러나 Internet Explorer (7, 8, 9)는 패널을 렌더링하지 못합니다. 빈 HTML 요소 만 렌더링합니다.

무엇이 문제입니까?

추신. 패널을 다시 만들고 싶지 않습니다. 컨테이너에 다시 추가하기 만하면됩니다.


편집 : 생성 된 패널 객체에 문제가 있어야합니다. 새 테스트 패널을 추가하면 작동합니다.

oTest = Ext.create('Ext.panel.Panel', { 
       title: 'Test', 
       html: 'Text' 
      }); 

그러나이 저장된 패널을 추가해도 작동하지 않으며 오류가 없습니다. Div는 비어 있습니다.

답변

0

.

+0

"Ext 컨테이너가 DOM에서 제거되기 직전에 .removeAll (false);를 호출해야했습니다."라는 코드를 게시 할 수 있습니까? ? IE8과 EXTJS 4.1에서 같은 문제에 직면하고 있습니다. 감사합니다. 편집 - btw, 여기에 게시 미안하지만, 나는 코멘트를하기에 충분한 담당자가 없다 : ( – Pat

+0

컨테이너가 제거되기 전에 우리 프레임 워크에서 이벤트를 잡는다.이 'Ext.container.Container'에서 나는'myContainer.removeAll (false);'컨테이너가 제거되는 지점을 찾아야합니다. – Patrick

1

이것은 ExtJS 구성 요소가 작동/사용되는 방식이 아닙니다. 그리고 렌더링 & 레이아웃은 구성 요소 생성의 무거운 부분이며 매번 사용자의 경우에 수행해야합니다. 정말 사용하지 않는 구성 요소를 숨기려면이 구성 요소를 제거하지 않는 것이 좋습니다. 카드 레이아웃으로 쉽게 보관할 수 있습니다.

하지만 다시 문제가; 구성 요소에는 이미 렌더링 된 경우이를 나타내는 비공개 매개 변수가 저장되므로 문제가 발생할 수 있습니다. autoDestroy: false 설정을 사용하여 소유자 컨테이너에서 호출 된 remove()을 사용하여 DOM에서 하위 구성 요소를 제거해야합니다 (잘하면 내부 매개 변수를 재설정).

중복 ID가 없는지 확인하십시오.

덧붙여서 과 함께 autoRender: true을 사용하는 것은 의미가 없습니다. 귀하의 경우에는 두 번째 구성이 컨테이너 렌더링의 대상이되는 렌더링 대상을 가지고 있지 않기 때문에 아무 것도 수행하지 않습니다.

는 외장 용기는 DOM에서 제거됩니다 직전

, 내가 .removeAll(false);를 호출하는 데 필요한 : 이제 며칠 마침내 해결 한 후

+0

감사합니다. 나는 ExtJs가 다른 JS 프레임 워크 내에서 사용되기 때문에 아무 것도 숨기거나 제거 할 수 없습니다. ExtJs는 최소화시 모든 ExtJs DOM 요소를 제거하지만 Extj 객체는 유지됩니다. 다시 추가해야합니다. 그리고 그것을 재창조하는 것은 최대화의 효과가 없습니다. FF와 Chrome에서 작동하기 때문에 IE가 아닌 이유는 무엇입니까? 내부 매개 변수와 ID를 확인합니다. – Patrick

+0

수정하지 않았습니다. 그 밖의 무엇을 시도 할 수 있습니까? – Patrick

+0

@ 아이디안 당신은 많이 할 수없는 것 같아요. doLayout()을 직접 호출 해 볼 수는 있지만 문제가 해결 될지는 의문입니다. 추가 프로세스를 디버그하여 잘못 된 부분을 확인해야합니다. – sra

관련 문제