또는 시스템 emitter
이든에게 전화).
당신은 그냥 Mediator
에 대한 액세스 Mediator
유일한 emitter
/publisher
/등, 다음 줄, 모듈/클래스/서비스/등을합니다. 당신이 원하는 경우 자신의 사건처럼 보일 것입니다/모듈 당신의 "클래스"에 대한 공개 방법을 가질 수 있도록
var myEvents = Mediator(),
Module1 = (function (events) {
var private_data = {},
private_method = function() {},
public_interface = { init : init };
function init() { // setup procedures
events.listen("widget/process/request", function (data) {
var result = doStuff(data);
events.fire("widget/process/result", result);
});
}
}(myEvents)),
Module2 = (function (events) {
var private_data = {},
public_interface = { init : init };
function init (data) { // setup procedures
events.fire("widget/process/request", data);
events.listen("widget/process/result", private_method);
}
return public_interface;
}(myEvents));
Module1.init();
Module2.init(data);
은, 당신도, 당신의 중재자를 포장, 수업의 내부에 뭔가를 할 수 하지만 중재자로를 통해 데이터를 전달됩니다
var myClass = function() {
var mediator = null,
public_interface = {
fire : function (evt, data) { if (!mediator) { return; } mediator.fire(evt, data); },
listen : function (evt, handler) { if (!mediator) { return; } mediator.listen(evt, handler); },
setMediator : function (newMediator) { mediator = newMediator; }
}
};
var mediator = Mediator(),
obj1 = myClass(),
obj2 = myClass();
obj1.setMediator(mediator);
obj2.setMediator(mediator);
obj1.listen("event1", obj1.doStuff.bind(obj1));
obj2.fire("event1", obj2.data);
귀하의 모듈을 이제 모두 하나의 중재자에 액세스 할 수 또는 그러나 많은 매개 당신 ... 당신은 각각 자신의 중재자를 위젯 줄 수있는 선택하는 개별 구성 요소가 공유 할 수있는 것 ... ... 또한 각 위젯에 시스템 전체 조정자에 대한 액세스 권한을 부여하므로 구성 요소가 AJAX 또는 DOM과 같은 글로벌 서비스에 액세스 할 수 없지만 widget 할 수있다.
공용 랩퍼 호출을 사용하여 구성 요소에 인터페이스를 제공하여 람다/콜백 헤비 JS 방식이 아닌 기본 프로세스에서보다 고전적인 방식으로 프로그래밍 할 수 있습니다 (
).
var imageLoader = ImageLoader();
imageLoader.setMediator(mediator);
img = imageLoader.load("myimg037");
imageLoader.fire("imageloader/imageloaded/myimg037", img);
또는 이와 유사한 프로젝트에서 보일 수 있지만 - imageLoader
다른 모듈에 대해 아무것도 모르지만 당신은 그것의 .fire
메서드를 호출 할 때, 어떤 모듈 같은 중재자를 공유하고 이벤트를 수신 통지됩니다.
사용자가 대신 닫는 토론 질문에 대답 해보세요. 이 질문에 답해 주신 Nougard, Pheonix & dbrin에게 감사드립니다. 매우 도움이된다. – Nas