이벤트는 페이지를 상호작용적이고 사용자 행동에 반응하도록 만드는 핵심 요소입니다.
사용자가 Gantt 차트와 상호작용할 때마다 dhtmlxGantt는 이벤트를 발생시킵니다. 이러한 이벤트를 활용하여 어떤 일이 발생했는지 감지하고, 그에 맞는 코드를 실행할 수 있습니다.
이벤트 리스너를 추가하려면 attachEvent 메서드를 사용하세요.
gantt.attachEvent("onTaskClick", function(id, e) {
alert("You've just clicked an item with id="+id);
});
참고:
이벤트 핸들러를 제거하려면 detachEvent 메서드를 사용하세요:
이벤트 핸들러를 연결/해제하는 일반적인 방법
// 이벤트 연결
var eventId = gantt.attachEvent("onTaskClick", function(id, e) {
alert("You've just clicked an item with id="+id);
});
// 이벤트 해제
gantt.detachEvent(eventId);
모든 핸들러를 한 번에 제거하고 싶다면 다음과 같은 방법을 사용할 수 있습니다:
// 이벤트를 연결할 때 핸들러 ID 저장
var events = [];
events.push(gantt.attachEvent("onTaskClick", function(id, e) {
alert("You've just clicked an item with id="+id);
});
events.push(gantt.attachEvent("onTaskDblClick", function(id, e) {
alert("You've just double clicked an item with id="+id);
});
// 저장된 모든 이벤트 해제
while (events.length)
gantt.detachEvent(events.pop());
특정 이벤트에 핸들러가 연결되어 있는지 확인하려면 checkEvent 메서드를 사용하세요:
gantt.attachEvent("onTaskClick", function(id, e) {
alert("You've just clicked a task with id="+id);
});
gantt.checkEvent("onTaskClick"); // 'true' 반환
'onbefore'로 시작하는 이벤트는 취소할 수 있습니다.
이러한 이벤트를 취소하려면 이벤트 핸들러에서 false를 반환하면 됩니다.
이벤트 핸들러 취소하기
gantt.attachEvent("onBeforeTaskChanged", function(id, mode, old_task){
var task = gantt.getTask(id);
if(mode == gantt.config.drag_mode.progress){
if(task.progress < old_task.progress){
dhtmlx.message(task.text + " progress can't be undone!");
return false; }
}
return true;
});
이벤트 핸들러 내부에서는 this 키워드를 사용하여 gantt 객체에 접근할 수 있습니다.
이벤트 핸들러 내부에서 참조하기
gantt.attachEvent("onTaskClick", function(id, e){
parentId = this.getTask(id).parent;
});
Back to top