1. dojo.event.connect()를 이용한 사용자 이벤트 호출
//Dojo 라이브러리 임포트
<script language="JavaScript"
type="text/javascript"
src="dojo-0.3.1-ajax/dojo.js">
</script>
<script type="text/javascript">
// 윈도우 로드시 함수 실행
window.onload = function () {
// 이벤트를 발생시킬 객체를 가져온다.
var link = document.getElementById("mylink");
// link 객체에 온클릭 이벤트 발생시 myHandler를 호출한다.
dojo.event.connect(link, "onclick", myHandler);
}
// 이벤트를 처리할 "myHandler" 함수를 정의한다.
function myHandler(evt) {
}
</script>
==> 온로드시 함수 실행은 초기화 함수를 지정한 후
dojo.event.connect(window, "onload", myInit);
다음과 같이 실행할 수 있다.
2. DOM 노드에 이벤트 핸들러 등록
// 윈도우가 로드 될때 myInit 함수를 호출한다.
dojo.event.connect(window, "onload", myInit);
function myInit() {
//이벤트를 발생시킬 객체를 가져온다.
var link = document.getElementById("mylink");
// foo 함수를 가지고 있는 exampleObj를 생성한다.
var exampleObj = {
foo: function(){
alert("exampleObj.foo: invoked " );
},
};
// foo 함수를 가지고 있는 exampleObj2를 생성한다.
var exampleObj2= {
foo: function(){
alert("exampleObj.foo: invoked " );
},
};
// link 노드의 온클릭 속성에 객체와 발생할 함수를 등록한다.
dojo.event.connect(link, "onclick", exampleObj, "foo");
// link 노드의 온클릭 속성에 객체와 다수의 이벤트를 등록할 수 있다.
dojo.event.connect(link, "onclick", exampleObj2, "foo");
}
3. 연속적으로 발생하는 이벤트 등록
// 두개의 함수를 가지고있는 객체를 생성한다.
var exampleObj3 = {
//객체가 호출된 횟수를 저장할 변수 선언
counter: 0,
foo: function(){
this.counter++;
alert("exampleObj3.foo: invoked, counter = " + this.counter );
},
bar: function(){
this.counter++;
alert("exampleObj3.bar: invoked, counter = " + this.counter );
},
};
// exampleObj3 객체의 "foo" 함수가 호출되기 전에 "bar" 함수를
// 호출하도록 지정한다.
dojo.event.connect("before", exampleObj3, "foo", exampleObj3, "bar");
// The "foo" function of the exampleObj3 is registered for the
// 노드의 온클릭 속성에 exampleObj3 의 foo함수를 등록한다..
dojo.event.connect(link, "onclick", exampleObj3, "foo");
4. dojo.event.connect는 기존의 이벤트에 다른 이벤트를 추가 할때 기존 이벤트를 수정하지 않고
간단하게 추가할 수 있다.
5. dojo.event.connect(dojo.byId("foo"), "onmousemove",function(evt){
alert("mouse at pos" + evt.pageX + "," + evt.pageY);
});
이벤객체를 통하여 이벤트에 관한 여러가지 정보를 알수있다.
target, currentTarget, pageX/pageY, layerX/layerY, fromElement , toElement ,charCode
또하 stopPropagation() 메소드를 통하여 관련된 이벤트를 취소할 수 있다.
6. 윈도가 load, unload 될 때 호출되는 함수의 등록은 보통 window.onLoad로 진행 한다.
하지만 DOJO를 사용한다면 dojo.addOnLoad를 사용해야 한다.
그 이유이는 dojo 객체가 로드 되기전에 초기화 함수가 호출 되어 nasty error를 발생시 킬 수
있기 때문이다.
7. function Scroller() {
this.setProducts = function(pid) {
}
this.handleEvent = function(args) {
if (args.event == 'showProducts') {
this.setProducts(args.value);
}
}
this.load = function () {
dojo.event.topic.subscribe("/scroller", this, handleEvent);
}
}
function Accordion() {
dojo.event.connect(link, "onclick", function(evt){
this.target = target;
dojo.event.topic.publish("/scroller", {event: "showProducts", value : target});
});
}
위과 같이 "/scroller"를 통하여 웨젯과 객체관의 상호 작용을 할 수있다.
댓글 0
| 번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
|---|---|---|---|---|
| 81 | [React.JS] 강좌 목록 | 황제낙엽 | 2020.05.19 | 385 |
| 80 |
Redux: React 앱의 효율적인 데이터 교류
| 황제낙엽 | 2020.05.19 | 971 |
| 79 | Jasmine 관련 | 황제낙엽 | 2020.01.13 | 492 |
| 78 | 마우스 드래그(drag)시 iframe 위에서 컨트롤 잃는 현상과 해결 방안 | 황제낙엽 | 2017.12.12 | 28271 |
| 77 | 다섯 가지의 Ajax 우수 사례 | 황제낙엽 | 2011.04.07 | 490 |
| 76 | 15+ jQuery Popup Modal Dialog Plugins and Tutorials | 황제낙엽 | 2011.03.30 | 574 |
| 75 |
$.ajax() 공략
| 황제낙엽 | 2011.03.27 | 670 |
| 74 | DWR을 이용해서 객체를 JSON으로 변환하기 | 황제낙엽 | 2011.03.25 | 347 |
| 73 |
json을 이용한 로그인 구현
| 황제낙엽 | 2011.03.25 | 832 |
| 72 | How Prototype extends the DOM (Prototype으로 DOM을 확장하는 법) | 황제낙엽 | 2011.03.24 | 695 |
| 71 | 스크랩 | 황제낙엽 | 2009.04.16 | 439 |
| 70 | YUI 스크랩 | 황제낙엽 | 2009.03.12 | 323 |
| 69 | 스크랩 | 황제낙엽 | 2009.03.11 | 316 |
| 68 | 관심 사이트 | 황제낙엽 | 2009.03.12 | 431 |
| 67 | 웹 개발 패러다임의 전환 - Flex와 Ajax의 동거 | 황제낙엽 | 2006.12.21 | 434 |
| 66 | Ajax 강의 정리 | 황제낙엽 | 2006.04.04 | 387 |
| 65 | 자바 기술을 이용한 AJAX의 활용 | 황제낙엽 | 2006.02.08 | 347 |
| 64 |
대표적인 AJAX Framework 소개
| 황제낙엽 | 2007.02.14 | 414 |
| 63 | Ajax Framework 인기 순위: Ajaxian.com | 황제낙엽 | 2007.02.13 | 368 |
| 62 |
prototype.js 를 위한 개발자 노트 (Ajax Framework)
| 황제낙엽 | 2007.02.15 | 335 |