2011-01-15 3 views
2

문서의 본문에 맞춤 이벤트를 첨부 할 수 있습니까? 나는 간단한 메시지 버스를 구현하고 싶다. jQuery로 여러 번 해봤지만 ExtJS에서 어떻게해야할지 모르겠습니다.ExtJS 본문에 맞춤 이벤트 추가

감사합니다.

답변

3

본문 또는 DOM 요소에 이벤트를 첨부 할 필요가 없습니다. 전용 개체에 첨부하는 것이 좋습니다.

처럼 :

MyApp.MessageBus = Ext.extend(Ext.util.Observable, { 

    // I don't think it's necessary to declare all events 
    events : { 
    sayHello : true 
    } 


}); 

MsgBus = new MyApp.MessageBus(); 

그리고, 어딘가에 코드 :

MsgBus.on('sayHello', function(who) { alert("Hello, " + who); }); 

그리고, 다른 곳에서 :

MsgBus.fireEvent('sayHello', 'innerJL'); 
+0

하지만이 경우에는 앱의 각 구성 요소에 메시지 버스를 삽입해야합니다. 문서의 본문을 통해 맞춤 이벤트를 실행하면 어디에서나 청취자를 쉽게 연결할 수 있습니다. 그것은 모두 덜 결합 된 구성 요소에 관한 것입니다. –

+2

메시지 버스를 싱글 톤으로 만들면 document.body에서 발사하는 것과 똑같은 양의 코드가되지만 메시지 버스가 다른 유용한 동작으로 확장 될 수 있다는 이점이 있습니다. 필자는 문서에 물건을 첨부하는 것보다이 방법을 적극 추천합니다. –

1

내가 Drasill에 동의하고, 많은 예제가 Observable에 기반한 간단한 버스 구현을 작성하기위한 Ext 커뮤니티. 처음에는 herehere을 참조하십시오.

1

문서 자체에 두는 것은 사용자 지정 이벤트를 실행하는 데 문제가 있습니다. 완료 될 수 있습니다 - 결과를 표현한 Ext.util.ObservableExt.getDoc으로 확장하는 클래스를 만들어야합니다.

하지만 Observables에 이미 enableBubble : ['foo', 'bar']이 추가되어 이벤트를 버블 할 수 있습니다. 즉, Observable 인 아동에게 fireEvent('foo')을 수행하면 청취자가있는 곳의 맨 위로 거품이 날 것입니다.