이 방법을 사용할 수는 있지만 직접 크기 조정 요청을 BorderContainer로 전달해야합니다.
한 가지 규칙은 Dojo 레이아웃 위젯에 자식 위젯이 하나만있는 경우 크기 조정을 호출한다는 것입니다. 여러 위젯이있는 경우 각 위젯에 부여 할 공간이 얼마인지 알지 못하므로 손을 위로 던져서 크기를 알아낼 수 있습니다.
서식 파일의 BorderContainer에 첨부 지점 이름을 data-dojo-attachpoint="bc"
으로 지정하십시오. 그런 다음 resize 메소드를 오버로드하고 크기 조정 요청을 전달하십시오.
isLayoutContainer: true,
resize: function(changeSize, resultSize) {
this.inherited(arguments);
this.bc.resize(changeSize, resultSize);
}
이것은 BorderContainer가 크기 조정에 적합한 유일한 것으로 가정합니다. 즉, 위젯의 모든 공간을 차지합니다.
이제 자녀에게 resize를 호출하기 때문에 레이아웃 위젯처럼 작동하므로 그림과 같이 isLayoutContainer
을 정의해야합니다. resize API의 문서화가 잘되어 있지 않으며 isLayoutContainer도 훨씬 적습니다. 이 기능이 없으면 창 크기가 변경 될 때 외부에서 크기를 조정할 수 있습니다.
테두리 컨테이너 위나 아래에 내용을 나중에 만드는 경우 그에 따라 changeSize.w 및 changeSize.h를 조정해야합니다. 그리고과 같은 호출에서는 changeSize와 resultSize가 제공되지 않으며 현재 크기를 사용해야하거나 그렇지 않으면 계산해야합니다. 이 경우에 dojo/dom-geometry이 도움이됩니다.
높이 문제가 있습니다. 위젯 선언적 인스턴스화로 인해 발생했다고 생각합니다. 프로그래밍 방식의 인스턴스화를 시도 했습니까? –
아니요 프로그래밍 방식의 인스턴스화를 시도하지 않았습니다. 방금 해결 방법으로 해킹을 발견했습니다. setTimeout 내부의 임베디드 BorderContainer에 대한 resize() 호출 : https://embed.plnkr.co/VNDsd7iT82IqdIFQbaxy/. 그러나 나는 그것에 의존하지 않을 것입니다. – brunesto