2013-04-05 48 views
1

我在重构我的应用程序,现在我的路由器不会响应。我觉得这可能与事件的顺序有关。但那是猜测。有任何想法吗?Marionette AppRouter未开火

init.js

define(function(require) { 
    'use strict'; 
    var app = (require('app')()), 
     Backbone = require('backbone'); 
    app.modules = {}; 
    require('modules/main/main'); 
    app.on('initialize:after', function() { 
     if (Backbone.history) { 
      Backbone.history.start(); 
     } 
    }); 
    app.start(); 
}); 

模块/主/ main.js

define(function(require) { 
    'use strict'; 
    var app = (require('app')()), 
     MainController = require('widgets/main/controller'); 
    app.addInitializer(function() { 
     app.modules.main = new MainController(); 
    }); 
}); 

部件/主/ controller.js

define(function(require) { 
    'use strict'; 
    var app = (require('app')()), 
     Marionette = require('marionette'), 
     View = require('./view'); 
    return Marionette.Controller.extend({ 
     initialize: function(options) { 
      this.router = new Marionette.AppRouter.extend({ 
       appRoutes: {'apps': 'showApp'}, 
       controller: this 
      }); 
     }, 
     showApp: function() { 
      console.log('route fired!'); 
     } 
    }); 
}); 

回答

0

我认为这个问题在许多异步require要求。 我想尝试在例子中改变像main.js这样的文件。

`

define(['app','widgets/main/controller'], function(App, Ctr){ 

    App.addInitializer(function() { 
     app.modules.main = new Ctr; 
    }); 

}); 

`