在我的应用程序中有几个模块可以自己负责,这就是我有些困惑的地方..
如何在模块之间进行通信?
如何通知或聆听模块之间的决策以适当的方案..?
示例:
模块1,
var MyModule1 = (function() {
var myPrivateData = 303;
function myPrivateFunction() {
alert('private');
}
return {
myPublicData : 42,
myPublicFunction : function() {
alert('public');
}
};
})();
第2单元
var MyModule2 = (function() {
var myPrivateName = privatized;
function myPrivateFunction() {
alert(myPrivateName) ;
}
return {
myPublicData : 42,
myPublicFunction : function() {
alert('public');
}
};
})();
我怎样才能让他们互相沟通,互相倾听......?有人可以用一些小例子澄清一下吗?我需要共享与module2共享的privateData和与module1共享的myPrivate名称,以及触发任何click事件。
提前致谢!
答案 0 :(得分:3)
以下是浏览器中松耦合模块组织的基本概念:
当module1中的代码需要通知其他人某些事件时,它会执行此操作:
$(document).trigger( "some:event", someData);
如果需要通知“some:event”,那么module2将在其初始化代码中执行此操作:
$(document).on( "some:event", function(evt,someData) {
// ... do something with the data ...
} );
在此模式中,两个模块完全独立。他们唯一要知道的是与他们沟通的事件的名称。
答案 1 :(得分:0)
像这样的东西
var ParentClass = (function() {
var privateVariable = 'toto';
this.publicVariable = 'titi';
this.ChildClass = new ChildClass(this);
this.ChildClass.execute();
});
function ChildClass(parent) { this.parent = parent; return this; };
ChildClass.prototype.execute = function() {
alert (this.parent.publicVariable); // show titi
};
ParentClass();