例如,我可能有一个菜单屏幕,一个选项屏幕,一个编辑器屏幕等。之前,我已经将每个这些包装成一个提供的类,并为每个类提供激活和停用功能。 activate函数将显示相关的dom元素并开始接受输入。 deactivate函数将隐藏相关的dom元素并停止接受输入。因此,如果用户在菜单屏幕中,并点击“设置选项”按钮,我会做这样的事情:
this.deactivate() // We're currently in the menu, so the menu object is "this"
options.activate()
是否有处理此方案的标准方法?
答案 0 :(得分:1)
有许多框架可以实现JavaScript中主要称为“publish/subscribe”的模式; Backbone.Events是我经常使用的。这是实现它的一种非常简单的方法。这假定您在项目中同时包含backbone.js和underscore.js。
var Foo = {},
Bar = {};
_.extend(Foo, Backbone.Events);
_.extend(Bar, Backbone.Events);
Foo.prototype.deactivate = function() {
// Do stuff
this.trigger("Foo_Deactivated");
};
Bar.prototype.activate = function() {
// Do stuff
this.trigger("Bar_Activated");
};
myFoo = new Foo();
myBar = new Bar();
myBar.on("Foo_Deactivate", function() {
this.activate();
this.trigger("Bar_Activated");
}, this);
希望能回答你的问题!