문서의 본문에 맞춤 이벤트를 첨부 할 수 있습니까? 나는 간단한 메시지 버스를 구현하고 싶다. jQuery로 여러 번 해봤지만 ExtJS에서 어떻게해야할지 모르겠습니다.ExtJS 본문에 맞춤 이벤트 추가
감사합니다.
문서의 본문에 맞춤 이벤트를 첨부 할 수 있습니까? 나는 간단한 메시지 버스를 구현하고 싶다. jQuery로 여러 번 해봤지만 ExtJS에서 어떻게해야할지 모르겠습니다.ExtJS 본문에 맞춤 이벤트 추가
감사합니다.
본문 또는 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');
문서 자체에 두는 것은 사용자 지정 이벤트를 실행하는 데 문제가 있습니다. 완료 될 수 있습니다 - 결과를 표현한 Ext.util.Observable
을 Ext.getDoc
으로 확장하는 클래스를 만들어야합니다.
하지만 Observables에 이미 enableBubble : ['foo', 'bar']
이 추가되어 이벤트를 버블 할 수 있습니다. 즉, Observable 인 아동에게 fireEvent('foo')
을 수행하면 청취자가있는 곳의 맨 위로 거품이 날 것입니다.
하지만이 경우에는 앱의 각 구성 요소에 메시지 버스를 삽입해야합니다. 문서의 본문을 통해 맞춤 이벤트를 실행하면 어디에서나 청취자를 쉽게 연결할 수 있습니다. 그것은 모두 덜 결합 된 구성 요소에 관한 것입니다. –
메시지 버스를 싱글 톤으로 만들면 document.body에서 발사하는 것과 똑같은 양의 코드가되지만 메시지 버스가 다른 유용한 동작으로 확장 될 수 있다는 이점이 있습니다. 필자는 문서에 물건을 첨부하는 것보다이 방법을 적극 추천합니다. –