2011-12-01 3 views
1

ExtJS 3.x와 4.x 사이에 주목해야하는 한 가지 중요한 차이점은 디스플레이가 포함 된 요소 내부에 렌더링 된 구성 요소에 대한 렌더링/레이아웃 계산이 어떻게 처리되는지입니다 : none (요소가 포함 된 Ext 생성/모니터되지 않음). 3.x에서 포함하는 요소를 표시 할 때 포함 된 Ext 구성 요소는 적절하게 렌더링되고 크기 설정에 관계없이 크기가 조정됩니다.ExtJS 4 - 초기에 숨겨진 렌더링 구성 요소

그러나 4.x에서는 포함 된 요소가 표시 될 때 동일한 구성 요소가 전혀 표시되지 않고 높이와 너비가 0입니다. .setSize()를 호출하면 표시되고 나면 올바르게 표시됩니다. 문제는 내 응용 프로그램에 숨겨진 구성 요소가 표시 될 수있는 모든 이벤트를 거칠 수있는 방법이없고 레이아웃을 수동으로 다시 계산하도록하는 코드를 추가하는 것입니다.

제 질문은 4.x의 모든 구성 요소에 대해이 상황에서 3.x의 동작을 되돌릴 수있는 방법이 있습니까?

답변

0

시도해 볼 수있는 것은 구성 요소에 기본 DOM 요소 인 delegate이있는 리스너를 설정하는 것입니다. 그러면 아마도이 문제가 해결됩니다. 그러나 가능하면 프레임 워크를 사용하여 뷰포트를 사용하여 전체 페이지 레이아웃을 관리하는 것이 좋습니다. 여전히 HTML을 빨아 (예 :해야합니다) 컨테이너 나 패널에 렌더링 할 수 있습니다. 완벽한 사용 사례는 서버 쪽 코드 (jsp, gsp, asp ..)에서 생성 된 다음 머리글과 바닥 글이며 contentEl : 'myDivId' 구성을 사용하여 뷰포트의 북쪽 또는 남쪽 영역에 표시됩니다.

+0

프레임 워크를 사용하여 전체 페이지 레이아웃을 관리하는 것은 현재 작업중인 응용 프로그램의 현재 시점에서 옵션이 아닙니다. 이벤트 델리 게이션 아이디어는 흥미 롭습니다. 그러나 약간 뒤로 향한 것처럼 보입니다. 비 - extjs 요소가 필요하기 때문에 구성 요소에 현재 표시되어 있고 레이아웃을 다시 계산해야 함을 알리는 구성 요소가 필요합니다. –

+0

예, 그게 좋은 생각입니다. 사키의 예를 본다. 나는 정확하게 그가 그렇게하고 있다고 생각한다. – dbrin

관련 문제