如何在Javascript单页面应用程序中处理多个活动?

时间:2013-01-11 21:02:19

标签: javascript singlepage single-page-application

例如,我可能有一个菜单屏幕,一个选项屏幕,一个编辑器屏幕等。之前,我已经将每个这些包装成一个提供的类,并为每个类提供激活和停用功能。 activate函数将显示相关的dom元素并开始接受输入。 deactivate函数将隐藏相关的dom元素并停止接受输入。因此,如果用户在菜单屏幕中,并点击“设置选项”按钮,我会做这样的事情:

this.deactivate() // We're currently in the menu, so the menu object is "this"
options.activate()

是否有处理此方案的标准方法?

1 个答案:

答案 0 :(得分:1)

有许多框架可以实现JavaScript中主要称为“publish/subscribe”的模式; Backbone.Events是我经常使用的。这是实现它的一种非常简单的方法。这假定您在项目中同时包含backbone.jsunderscore.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);

希望能回答你的问题!