component.bind(type, function);
event를 등록하기 위한 함수입니다.
type이 WebSquare 이벤트인 경우 이벤트 발생 시 WebSquare에서 전달하는 arguments가 해당 핸들러 함수로 전달됩니다.
(ex : grid1.bind(‘oncellclick’, function(row, col){ … })
type이 Browser이벤트인 경우 이벤트 발생 시 브라우저 이벤트 객체(event)가 해당 핸들러 함수로 전달됩니다.
(ex : input1.bind(‘onclick’, function(ev){ … }))
위 두가지에 해당하지 않는 type인 경우 자동으로 이벤트가 발생하지 않으며, trigger 함수를 통해 동작시킬 수 있습니다.
(ex : calendar1.bind(‘oncustom’, function(args){ …} );
calendar1.trigger(‘oncustom’, [args]); )
하나의 type에 대해 여러 function을 bind로 등록할 경우 이벤트 발생 시 bind를 호출한 순서대로 핸들러 함수가 호출됩니다.
WebSquare 엔진 내부에서 특정 이벤트 type에 대한 이벤트를 등록하여 처리하고 있는 경우, IE 6,7,8의 경우 엔진 내부의 핸들러 함수를 나중에 호출하며, 그 외의 브라우저의 경우 엔진 내부 핸들러 함수를 먼저 호출한 후, bind로 등록된 핸들러 함수들을 차례대로 호출합니다.
(ex : grid1.handleClickEvent = function(e){alert(0); ...} // 엔진 내부 핸들러
grid1.bind(‘onclick’, function(e){alert(1);});
grid1.bind(‘onclick’, function(e){alert(2);});)
(result - IE 6,7,8 : 1 -> 2 -> 0 , 그 외 : 0 -> 1 -> 2 )
(grid의 click이벤트 핸들러에 alert(0); 코드를 추가했다고 가정한 경우입니다.)
component.unbind([type], [function]);
bind 함수로 등록한 event 핸들러 또는 XML에서 스크립트로 등록한 핸들러를 제거하는 함수입니다. 엔진 내부 핸들러나 document.addEventListener로 등록한 함수와 같이 bind로 등록하지 않은 이벤트 핸들러는 제거하지 않습니다.
unbind인자로 type, function이 모두 주어진 경우, 해당 type으로 등록된 이벤트 핸들러 중 function과 정확히 일치하는 핸들러를 제거합니다.
unbind인자로 type만 주어진 경우, 해당 type으로 등록된 모든 이벤트 핸들러를 제거합니다.
unbind인자로 아무 인자도 주어지지 않을 경우 해당 component에 등록된 모든 이벤트 핸들러를 제거합니다.
component.trigger(type, [array]);
이벤트를 발생시키기 위해 사용하는 함수입니다.
type이 브라우저 이벤트이면서 WebSquare component event가 아닌 경우 document.dispatchEvent 또는 document.fireEvent 함수를 통해 이벤트를 직접 발생시킵니다. 이 경우 [object](object array)형태로 추가 인자를 전달한 다음 해당 핸들러의 이벤트 객체에서 해당 인자를 가져와서 사용할 수 있습니다.
( ex : grid1.bind(‘onclick’, function(e){alert(e.a + ‘,’ + e.b);});
grid1.trigger(‘onclick’, [{a : ‘arg1’, b : ‘arg2’}]); )
( result : arg1,arg2)
그 외 type의 경우에는 해당 type으로 등록된 핸들러 함수들을 등록된 순서대로 호출합니다. array형태로 추가 인자를 전달하면 해당 이벤트 핸들러 함수에 추가 인자가 전달됩니다.
[array] 인자의 type은 반드시 array여야 합니다.
1. bind, unbind, trigger 모두 WebSquare의 component 단위로 지원합니다. HTML element 단위로는 지원하지 않습니다.
2. 각 함수 호출 시 type인자의 맨 앞의 2글자가 ‘on’으로 시작하지 않을 경우 자동으로 ‘on’을 붙입니다.
3. type의 이름이 WebSquare event와 browser event가 겹치는 경우가 있는데, 이 경우 항상 WebSquare event 형태의 type으로 간주하여 처리합니다.
(ex : treeview의 ondrop, anchor의 onclick)