탭패널 내부에 여러 패널을 생성하여 탭별로 각 화면을 출력해보도록 하겠습니다.


    탭 개념 ▼


    하나의 영역에 여러개의 패널을 탭으로 나누어서 탭을 클릭할때마다 정의된 패널에 존재하는 화면이 각각 출력되는 것입니다.


    1차적으로 제일 간단한 각 탭별로 패널을 출력해보도록 하겠습니다.


    ▶ 샘플코드

    
    Ext.onReady(function(){
    	Ext.create('Ext.tab.Panel',{
    		width : 300,
    		height : 300,
    		items : [{
    			title : 'TAB1',
    			html : 'Tab1 Body'
    		},{
    			title : 'TAB2',
    			html : 'Tab2 Body'
    		}],
    		renderTo : Ext.getBody()
    	});
    })
    
    

    ▶ 실행결과

    [첫번째 탭]


    [두번째 탭]


    탭패널 컴포넌트 하위에 items config 속성에 2개의 패널을 추가하였습니다.

    각 패널들의 title 영역이 탭바의 title부분을 표시합니다.

    그리고 html에 들어간 컨텐츠 내용들이 각 패널의 body부분에 출력이 되는것입니다.


    ※ 탭패널 자체적으로 별도의 title config 설정도 해주셔도 무관합니다.


    물론, html이 아니고 items를 이용하여 기타 ExtJS 컴포넌트들을 각 탭패널의 body영역에 출력을 시킬수도 있습니다.

    샘플로 기존 샘플코드에서 첫번째 패널에 items로 변경하여 결과화면을 출력해보도록 하겠습니다.

    ▶ 샘플코드

    
    Ext.onReady(function(){
    	Ext.create('Ext.tab.Panel',{
    		width : 300,
    		height : 300,
    		items : [{
    			title : 'TAB1',
    			items : [{
    				xtype : 'button',
    				text : 'Button Component'
    			}]
    		},{
    			title : 'TAB2',
    			html : 'Tab2 Body'
    		}],
    		renderTo : Ext.getBody()
    	});
    })
    
    

    ▶ 실행결과



    실행결과 위와같이 TAB1 영역에 버튼컴포넌트가 출력되었습니다.


    탭바 위치 변경

    이어서 탭위치를 상/하/좌/우 4가지 영역으로 변경이 가능합니다.

    저번처럼 여러개의 div태그를 생성 후 각 영역에 렌더링을 해보도록 하겠습니다.

    각 탭패널 컴포넌트에 tabPosition 이라는 config 속성을 정해주시면 되겠습니다.

    tabPosition에 value값은 다음과 같습니다.

    tabPosition : 'top' or 'bottom' or 'left ' or 'right'


    탭포지션을 이용하여  각 위치별로 탭바를 출력시켜보았습니다.

    ▶ 샘플코드

    
    Ext.onReady(function(){
    	Ext.create('Ext.tab.Panel',{
    		width : 300,
    		height : 300,
    		//default(top)
    		tabPosition : 'top',
    		items : [{
    			title : 'TAB1',
    			html : 'Tab1 Body TOP'
    		},{
    			title : 'TAB2',
    			html : 'Tab2 Body TOP'
    		}],
    		renderTo : document.getElementById("top")
    	});
    	Ext.create('Ext.tab.Panel',{
    		width : 300,
    		height : 300,
    		tabPosition : 'bottom',
    		items : [{
    			title : 'TAB1',
    			html : 'Tab1 Body BOTTOM'
    		},{
    			title : 'TAB2',
    			html : 'Tab2 Body BOTTOM'
    		}],
    		renderTo : document.getElementById("bottom")
    	});
    	Ext.create('Ext.tab.Panel',{
    		width : 300,
    		height : 300,
    		tabPosition : 'left',
    		items : [{
    			title : 'TAB1',
    			html : 'Tab1 Body LEFT'
    		},{
    			title : 'TAB2',
    			html : 'Tab2 Body LEFT'
    		}],
    		renderTo : document.getElementById("left")
    	});
    	Ext.create('Ext.tab.Panel',{
    		width : 300,
    		height : 300,
    		tabPosition : 'right',
    		items : [{
    			title : 'TAB1',
    			html : 'Tab1 Body RIGHT'
    		},{
    			title : 'TAB2',
    			html : 'Tab2 Body RIGHT'
    		}],
    		renderTo :document.getElementById("right")
    	});
    })
    
    

    ▶ 실행결과


    탭바 클릭시 비동기(ajax)방식으로 각 패널의 페이지를 호출하는 기능도 존재하는데 이부분은 이후 다루도록 하겠습니다.

    지금까지 간단하게 탭패널에 대해서 알아보았습니다.




    Posted by 몽고