Circular Dependencies for a web app using backbone.marionette and requireJs

backbone-routing, backbone.js, javascript, marionette, requirejs

Solution

the schema:

 main.js -> router -> app -> subApp -> router

is right.

If you are using backbone.marionette, in order to access the router from the app and subApp, without using `global var`, you should start the app in router in this way:

// router.js
YourApp.start(router: router);
// app.js
YourApp.addInitializer(function(options){
  // do useful stuff here
  var myView = new MyView({
    router: options.router
  });
  YourApp.mainRegion.show(myView);
});

Problem

I am in the following situation. I am using requireJs to loads module and I don't want to use global variables. The main.js is responsible to load the router. Then the router loads the app and the app loads several subApps. After everything has been initialised, the subApps needs the `router` for making `router.navigate`. Here the schema: ``` main.js -> router -> app -> subApp -> router ``` Then I have a problem of Circular Dependencies and for that reason the router in subApp will be undefined. What is the best way to reorganise my code or to fix this problem? Are there some example about this?

Original source