首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有办法与boilerplatejs中的模块进行交互通信?

有没有办法与boilerplatejs中的模块进行交互通信?
EN

Stack Overflow用户
提问于 2012-09-13 06:19:23
回答 2查看 1.1K关注 0票数 6

关于BoilerplateJs的例子,我们应该如何调整这些模块,以便在用户对一个模块进行任何更改后,其他相关模块也应该随着该更改的完成而更新。

例如,如果有一个模块用于检索来自用户的输入,如姓名和销售额,另一个模块用于更新表或图形中检索到的数据,您能否举例说明,考虑到事件处理,这些内部连接是如何发生的?

谢谢!!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-09-13 12:45:02

在BoilerplateJS中,每个模块都有自己的moduleContext对象。此模块上下文对象包含两个方法'listen‘和'notify’。查看“/src/core/context.js”中的context类以了解更多详细信息。

需要“侦听”事件的组件应该通过指定事件和回调处理程序的名称来注册事件。引发事件的组件应该使用'notify‘方法让其他人知道发生了什么有趣的事情(可选地传递一个参数)。

GitHub获取最新BoilerplateJS代码的更新。我刚刚提交了一些更改,使clickCounter成为一个复合组件,其中“clickme组件”引发事件,而“彩票组件”侦听事件以响应。

通知事件的代码:

代码语言:javascript
复制
moduleContext.notify('LOTTERY_ACTIVITY', this.numberOfClicks());

监听事件的代码:

代码语言:javascript
复制
moduleContext.listen("LOTTERY_ACTIVITY", function(activityNumber) {
   var randomNum = Math.floor(Math.random() * 3) + 1;
   self.hasWon(randomNum === activityNumber);
});
票数 3
EN

Stack Overflow用户

发布于 2012-09-13 06:48:09

我会考虑使用发布-订阅库,比如Amplify。使用这种技术,一个模块很容易充当事件的发布者,而其他模块则注册为订阅者,以高度解耦的方式侦听和响应这些事件。

由于您已经在使用Knockout,因此您可能有兴趣首先尝试Ryan Niemeyer的knockout-postbox插件。有关该库的更多背景信息,请参阅包括a demo fiddle在内的available here。如果需要,您可以随时切换到Amplify。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12396915

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档