기존에 컴포넌트들을 단순히 속성값만을 지정하여 화면을 출력하는 작업을 해보았습니다.
물론, 야금야금 이벤트핸들링에 대해서 맛보기 형식으로 한두번 다루어 봤었습니다.
그러나 앞으로 다루어 볼 그리드패널이나 트리패널 컴포넌트 그리고 STORE라는 저장공간 등... 에 대해서
이해를 조금 더 쉽고 빠르게 진행하시려면
ExtJS 사이트에서 제공하는 API 도큐먼트 문서에서 원하고자 하는 내용을 찾는 방법을 익혀두셔야 합니다.
이 포스팅에서 다루는 내용을 이해가 안되시거나 막히신다면 앞으로의 포스팅 진행에 어려움이 있으실겁니다.
그럼 ExtJS API문서보는방법을 시작해보도록 하겠습니다.
하단사이트에 접근을 해보도록 하겠습니다.
http://docs.sencha.com/extjs/5.0/apidocs/
기본적으로 좌측에 API들이 트리형태의 패키지형식으로 정리되어있습니다.
광대한 양의 API를 지원하지만 솔직히 개발을 진행하면서
ExtJS에서 제공하는 API들을 얼마나 사용할 수 있을까요?
많이 써봐야 10~20%정도뿐이 되지 않는다고 생각합니다.
물론, API를 모두 번역하고 모든 컴포넌트들을 프로젝트에 적용을 한다면 100% 사용하는 셈이 되겠죠.
100% 사용하는 경우는 없다고 생각됩니다.
필요한것만 찾기 위해서는 우측상단에 검색창을 주로 이용할게 될것입니다.
예를들어, panel의 속성을 알고 싶다?
검색창에 "panel" 이란 검색어를 친다음 자동완성으로 나온 검색값들중 원하는 결과값을 클릭하십니다.
panel이라고 검색하실경우 제일 상단 xtype:panel이 나오고 다음으로 Ext.panel.Panel이 나오는데
이 2가지 결과는 동일한 클래스를 의미하는 것입니다.
아무거나 선택 하시면 되겠습니다.
JAVA 클래스개념과 상단히 비슷합니다.
Panel이라는 클래스는 Ext.panel 패키지내에 존재하는 클래스인것과 유사한 개념인거죠.
전에 포스팅했던 내용들을 위와 같은 방법으로 검색하시면 모두 쉽게 찾으실 수 있습니다.
같은 클래스명이지만 다른 패키지에 속한 경우도 많이 존재하는데
이부분에 대해서는 될수있으면 검색결과값 상단에 위치하니 모르셔도(?) 된다고 말씀드리고 싶습니다.
상단 클릭했는데 아니다?
그럼 다음 검색결과 값을 클릭하셔서 동작시켜보면 되는 문제이기 때문입니다.
어짜피 이것저것 적용해보면서 원하는 결과가 나오게되면 자연스레 자신의 머리에 들어가게 됩니다.
그럼 기존에 포스팅 한 코드의 일부를 보시겠습니다.
초기에 작성했던 포스팅에 대한 샘플코드를 이용하여 예를들어보겠습니다.
2014/10/21 - [웹개발강좌/ExtJS] - ExtJS 강좌 - 툴바위치 및 버튼 클릭 이벤트 알아보기
위 포스팅에 작성했던 코드를 보시면
최초에 컴포넌트는 Ext.create로 클래스 생성을 했고 하단 자식 컴포넌트는 xtype으로 컴포넌트 생성을 하였습니다.
Ext.create("Ext.panel.Panel",{}) = xtype : "panel"
둘다 같은개념입니다.
xtype : Ext.create("Ext.panel.Panel",{}) 와 같이 생성하여 적용하는 것도 가능 하지만
기본적으로 제공해주는 컴포넌트들은 이미 상수(?)로 지원을 해주므로
필요하지 않는이상 상수(?)를 사용해주시는게 편하시고 코드도 간결해지겠죠?
컴포넌트 속성들의 극히 일부를 적용해보았는데
실제로 어떻게 골라서 적용하는지에 대한 방법을 알려드리겠습니다.
Configs라는 메뉴에 마우스를 가져가보시면 레이어로 여러가지 속성들이 출력이 됩니다.
이부분이 바로 컴포넌트들의 속성 key가 되겠습니다.
샘플코드의 패널컴포넌트의 속성 key들이 바로 노란색으로 체크를 해놓은 부분들입니다.
바로 이 configs라는 페이지(?)를 통해서 찾아서 적용을 하는 것이죠.
그럼 key가 있는데 value 값은 어떻게 아느냐~
이것?일거 같은 config key 값을 클릭해주면
return type이랑 설명들이 영문으로 자세히 나와있습니다.
영단어 혹은 줄임말로 만들어놓은거라 추측하시기는 쉬우실 겁니다
width key 를 클릭하여 포커스 잡은 내용입니다.
입력가능한 값은 숫자 혹은 문자열이며 설명을 대충 보자면
"현재 이 컴포넌트의 넓이다"
"숫자값을 입력하면 픽셀값의 숫자로 해석을 한다"
"문자열은 CSS의 단위값으로 처리가 된다"
대충 이런식으로...
구글번역을 이용하여 간단하게 CONFIG의 설명에 대해서 유추해볼수 있겠습니다.
다른 속성값들도 이런 방식을 이용하여 이해하면서 적용이 가능한 방법입니다.
다음으로 이벤트 핸들러를 적용해보는 방법입니다.
이벤트 핸들러의 예를들기위한 샘플코드는
2014/10/28 - [웹개발강좌/ExtJS] - ExtJS 강좌 - 파일필드를 이용하여 파일업로드하기(html5를 이용한 다중파일 포함)
이 포스팅에 2개정도 사용한 내용이 있으니 해당 코드를 이용하여 설명을 드리겠습니다.
기본적으로 이벤트 핸들러를 적용하기 위해서는 listeners 라는 속성내에 정의를 해주셔야 합니다.
MVC에는 약간 방식이 다르긴 하지만 MVC 포스팅 전까지는 리스너 속성내에 이벤트 핸들러를 정의하도록 하겠습니다.
이번에는 검색에 xtype인 filefield를 검색해보겠습니다.
작성한 xtype : filefield이므로 첫번째 결과값 클릭합니다.
속성 key를 알기위해서는 configs 메뉴에 마우스 OVER를 하였다면
이벤트 핸들러는 Events 메뉴에 마우스 OVER 하시면 확인이 가능합니다.
코드에 리스너 이벤트 2개가 등록되어있습니다.
afterrender, change 를 작성하였는데 change를 예를 들어보도록 하겠습니다.
지원하는 이벤트 동작내용을 알기위해 마찬가지로 클릭을 합니다.
change : function(this,value,eOpts){// code here}
위와같은 문법으로 이벤트 핸들링함수를 정의합니다.
change 이벤트에 대한 영문해석은 대략
"파일입력 컴포넌트의 값이 파일탐색기의 파일선택에 의하여 변경될경우에 동작되는 이벤트"
라고 유추해볼수 있겠습니다.
function 정의시 callback 되는 parameter들은 this,value,eOpts 3가지가 존재하는데
보통 this를 parameter시 정의되어있는 명칭이어서 별도의 변수명으로 변경해주셔야 할겁니다.
예를들어 object라던가 혹은 obj 등등...
첫번째 parameter는 파일컴포넌트에 대한 this object가 되겠습니다.
두번째 parameter는 return value 값이라는데 alert이나 결과값을 찍어보시면 좀더 확실히 아실거 같네요.
마지막 세번째 parameter 는 추가된 리스너 어쩌구라고 하는데 사용을 해본적이 없어서...;;
아무튼 저런식으로 이벤트를 catch할수 있으며 그 내부에 원하시는 함수구현을 하시면 되겠습니다.
현재 제블로그에 적용중인 GKSkin에 경우에 예를들어보면
현재 화면 좌측 사이드 바가 존재하는데
브라우저의 넓이가 일정사이즈까지 줄어들면 자동으로 collapsed 이벤트를 적용하여
자동접히는 기능을 events + methods의 문서를 보고 기능구현하였습니다.
화면이 사이즈가 넓을 경우 사이드바 expand 유지
화면이 일정사이즈까지 줄어들었을 경우 사이드바 collapsed 기능실행
마지막으로 컴포넌트에 대한 이벤트가 아닌 동작 핸들링을 설명드리도록 하겠습니다.
동작핸들링은 컴포넌트들이 어떠한 기능 및 동작을 진행할때 함수내에 정의하는 것입니다.
즉, 리스너의 이벤트 함수내에 컴포넌트들의 정보획득 및 기능구현을 위한 방법이기도 합니다.
위와같이 보시면 컴포넌트에 대한 정보 get/set에 대한 기본 핸들링부터
isxxx에 관련된 비교문까지 엄청 많은 함수들을 제공합니다.
파일필드클래스의 경우, 237개의 기능을 제공해주고 있네요. -0-;;;
예를들고자 파일컴포넌트의 getWidth 함수가 어떤 역할을 하는지 클릭해보도록 하겠습니다.
현재 컴포넌트(파일태그)의 태그 넓이를 구해오기 return 값은 숫자 라는 식으로 정보가 나와있습니다.
이런식으로 컴포넌트 핸들링을 위해서는 events 내에 methods들을 이용하여 구현하면 되는 방식입니다.
앞으로 리스너의 이벤트 핸들링 + 메소드 핸들링을 이용하여 조금 더 ExtJS에 다가가보도록 하겠습니다.
by 개발로짜
ExtJS 강좌 - 데이터스토어(store)의 proxy ajax를 통하여 콤보박스 목록 출력시켜보기 (0) | 2014.10.30 |
---|---|
ExtJS 강좌 - 콤보박스를 예를들어 스토어(STORE) 개념잡아보기 (0) | 2014.10.30 |
ExtJS 강좌 - 파일필드를 이용하여 파일업로드하기(html5를 이용한 다중파일 포함) (17) | 2014.10.28 |
ExtJS 강좌 - xtype을 이용하여 html의 입력태그들과 HTML에디터 컴포넌트를 출력시켜보자 (0) | 2014.10.27 |
ExtJS 강좌 - 버튼클릭으로 윈도우 모달창 띄워보기 (2) | 2014.10.24 |