如何从requirejs中的子模块调用父模块方法?

如何从requirejs中的子模块调用父模块方法?,requirejs,Requirejs,我有一个模块,它有两个子模块依赖项。在父模块中,我希望从两个子模块调用一个方法。我怎么能这么做 然后是否有其他方法将父模块对象传递给子模块构造函数 define(['child1', 'child2'], function (child1, child2) { return { init: function () { child1.init(); child2.init(); }, parentMethod: function() {

我有一个模块,它有两个子模块依赖项。在父模块中,我希望从两个子模块调用一个方法。我怎么能这么做

然后是否有其他方法将父模块对象传递给子模块构造函数

define(['child1', 'child2'], function (child1, child2) {
  return {
    init: function () {
      child1.init();
      child2.init();
    },
    parentMethod: function() {
      console.log('called');
    }
  }
});

/*child1*/
define(function() {
  return {
    init: function() {
      //call parentMethod()
    }
  }
});

/*child2*/
define(function() {
  return {
    init: function() {
      //call parentMethod()
    }
  }
});

RequireJS没有模块之间父子关系的概念。假定模块是单独的,并且一个模块如<代码>子1 < /代码>可以由多个模块加载(例如,由<代码> PARTENT1 和 PARTENT2>代码>加载,那么哪个模块应该要求JS被认为是Posi1< /P>的真正父代?
将对父对象的引用传递给您孩子的
init()
函数确实是一种方法。

我这样做了(将对象传递给孩子的init),但我正在寻找另一种方法。也许是另一种建筑?更好的做法?更好的做法可能是让子级发出事件(使用jQuery或事件库),并让父级处理事件。理想情况下,孩子们应该不了解家长,因此家长的工作应该是知道如何处理发出的事件。@kevin.groat我在某些情况下使用事件,在其他情况下使用对其他模块/类/实例的引用。这实际上取决于待解决问题的细节。我有一些库,在这些库中使用事件发射器相当于过度工程化。我有一些库,不使用事件发射器会导致耦合过紧。