4

私のアプリケーションには、独自の責任を負うためのいくつかのモジュールがあり、それが私が混乱しているところです..

  1. モジュール間の通信方法は?

  2. モジュール間で通知またはリッスンして、適切なシナリオの決定を下す方法..?

例:

モジュール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 名を共有する必要があります。また、クリック イベントが発生した場合に備えて共有する必要があります。

前もって感謝します!

4

2 に答える 2

5

ブラウザ内の疎結合モジュール編成の基本概念は次のとおりです。

module1 内のコードが何らかのイベントについて他の人に通知する必要がある場合、次のようにします。

$(document).trigger( "some:event", someData);

また、「some:event」について通知する必要がある場合、module2 は、初期化時にコードでこれを行う必要があります。

$(document).on( "some:event", function(evt,someData) {
   // ... do something with the data ...
} );

このスキーマでは、2 つのモジュールが完全に独立しています。彼らが知っている唯一のことは、彼らが通信しているイベントの名前です。

于 2013-11-07T00:17:15.563 に答える
-1

このようなもの

    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();
于 2013-09-28T10:48:01.950 に答える