为什么使用自定义事件/ Eventbus?

时间:2016-10-04 21:16:09

标签: javascript javascript-events software-design

我使用一个复杂的Javascript软件并尝试了解它是如何构建的。这是pdf.js,但对于这个问题并不重要。这是一个更多的软件设计方向的问题,而不是它在这个特定情况下的工作方式(我可以自己阅读)。我想知道为什么他们在简单点击按钮的情况下使用事件

示例:

appConfig.toolbar.openFile.addEventListener('click', function (e) {
  PDFViewerApplication.eventBus.dispatch('openfile');
});

appConfig.toolbar.openFile是一个Dom-Element,恰好是点击按钮。因此,click事件将调度事件 openfile

eventBus.on('openfile', webViewerOpenFile);

此事件触发函数

function webViewerOpenFile() {
    ...do stuff
}

在某些情况下,但并非所有情况下,中间还有一个步骤,我现在还不明白:Eventbus会创建旧的克隆事件。

eventBus.on('pagemode', function (e) {
  var event = document.createEvent('CustomEvent');
  event.initCustomEvent('pagemode', true, true, {
    mode: e.mode,
  });
  e.source.pdfViewer.container.dispatchEvent(event);
});

我真的看不出这种复杂方式的优势。为什么不像往常一样将函数绑定到Dom-Element,如下所示:

appConfig.toolbar.openFile.addEventListener('click', webViewerOpenFile);

也许有人可以点缀我?

0 个答案:

没有答案