listeners: { 'tabchange': function(tabPanel, tab){ // Ignore tab1 since it is a separate tab panel and we're managing history for it also. // We'll use its handler instead in that case so we don't get duplicate nav events for sub tabs. if(tab.id != 'tab1'){ Ext.History.add(tabPanel.id + tokenDelimiter + tab.id); } } }
위의 탭기능중 sub-tab3 를 선택한위 상단 탭을 클릭햇을 경우 다시 돌아왔을때 sub-tab3이 선택되어 있게 만들어준다. 이전 버전에서는 별도의 글로벌변수로 선언해준뒤 사용했었는데 이번 릴리즈에는 포함되어 나와서 상당히 편할듯하다.. 히스토리 컴포넌트 사용시에는 URL 핸들링이 하는지 URL자체가 변하는 효과를 볼수 있다.
[MultiSelect / ItemSelector] [데모보기] 이 기능은 사용자 확장기능에 올라왔던 기능인데 이번 릴리즈에 포함되었있다. 전통적인 방식의 <select multiple> 기능을 extjs로 구현한 것이다.
[FileUploadField][데모보기] 사용자 확장기능에서 가장 많이 찾던 swfFileUpload에서 차용한듯한 소스가 이번 릴리즈에 포함되어 있다. ajax fileupload를 찾는 국내 사용자에게는 상당히 유용한 컴포넌트가 될듯하다. Form 컴포넌트에 포함되어 있다.
var fibasic = new Ext.form.FileUploadField({ renderTo: 'fi-basic', width: 400 });
[XmlTreeLoader] [데모보기] 사용자 확장기능이다. 이전 treeLoader와 사용법은 비슷하다.
이미 아는 사람들은 다아는 로딩바 원하는 형태로 만들기 사이트(http://www.ajaxload.info/)에서 좋은 Loading Indicator(Spinner)를 구한 다음에 아래와 같이 간단히 구현할 수 있다.
jQuery(function($){ // Create img dom element and insert it into our document var loading = $('<img alt="loading" src="/images/loading.gif" />') .appendTo(document.body).hide(); // Make the image appear during ajax calls $(window).ajaxStart(loading.show); $(window).ajaxStop(loading.hide); });
자바스크립트 파일명명법은 java,jsp 파일명과 동일하게 camel 표기법으로 명명한다.
주의사항 : - 다른 파일냉의 동일한 메쏘드명으로 작성하지 않는다. - js 파일은 항상 인코딩 타입을 euc-kr (ms949 ascii)타입으로 코딩하되 파일자체가 Ajax를 통해 불러오는 페이지의 경우는 반드시 UTF-8 형태로 작성한다. (<script type="text/javascript" src="흠.js" charset="euc-kr"></script>) - 각 비즈니스(여기서는 메뉴)별 스크립트를 나누어 작성하되 필요한 경우에만 불러 사용한다. - 공통 클래스는 클래스임을 표기하여 준다. (sortTableClass.js) - 해당 비즈니스(여기서는 메뉴)에만 전용으로 쓰는 스크립트가 많다면 비즈니스명으로 폴더링한다.
표준 자바스크립트 사용
객체 접근은 cross-browser를 지원하는 표준 메쏘드나 프로퍼티를 사용한다. 1. document.all 보다는 document.getElementById, document.getElementsByName 등으로 접근한다. 2. eval은 되도록이면 자제하도록한다. 3. 객체가 create되면 반드시 destory할때 null처리를 한다. 4. try~ catch~throws 문은 필요한 부분에서만 사용한다.