0

我正在使用Backbone.js require.js underscore.js来构建一个应用程序。在我的JavaScript中,我有我的mainrouter.js文件处理菜单选择。Backbone.js初始化多个router.js文件

该应用程序分为几个部分,我想每节有一个sectionRouter.js文件。

出于某种原因,尝试加载一个sectionRouter.js的时候,我得到以下错误

TypeError: SectionRouter is undefined

这是我mainApplication.js的代码文件

define([ 
    'jquery', 
    'underscore', 
    'backbone', 
    'mainRouter', // Request mainRouter.js 
    'bootstrap', 
    'sectionRouter' // this is the 
], function($, _, Backbone, Router,SectionRouter){ 
var initialize = function(){ // Pass in our Router module and call it's initialize function 
    Router.initialize(); 
    initializeAnalytics(); 
    //Initiate a new history and controller class 
    Backbone.emulateHTTP = true; 
    Backbone.emulateJSON = true;   
    Backbone.history.start();     
}; 

var initializeAnalytics = function(){ 
    SectionRouter.initialize(); 
}; 

var initializeAll = function(){ 
    initialize(); 
    initializeAnalytics(); 
}; 

return { 
    initialize: initialize 
}; 
}); 

部分的sectionRouter的:

var SectionRouter= Backbone.Router.extend({ 
      //restfulUrl:"http://localhost:8080/myapp/", //This is the application service 
          //Routes tell the app what to do 
      routes:{ 
       "analytics/consumptions":"consumptionsActions", 
       "analytics/contents":"contentsActions", 
       "analytics/users":"usersAction"      
      }    
     }); 

var initialize = function(){    
      var sectionConsoleRouter= new SectionRouter;     
      //map consumptionsAction routing 
      sectionConsoleRouter.on('route:consumptionsActions', function(){      
       SeriesStorage(url to call);     
      }); 
    }; 

    return { 
      initialize: initialize 
     }; 

你能告诉我是否有可能加载mainRouter.js和其他部分R请将outer.js文件放在一起。

编辑

是否可以初始化mainRouter内sectionRouter?

回答

0

您已将bootstrap添加到您的定义函数参数列表,但该列表与您的require数组中的模块不匹配。所以SectionRouter没有值(这就是为什么你得到“未定义”)。

尝试:

define([ 
    'jquery', 
    'underscore', 
    'backbone', 
    'mainRouter', // Request mainRouter.js 
    'sectionRouter' // this is the 
    'bootstrap' 
], function($, _, Backbone, Router,SectionRouter, Bootstrap){ 

可能有其他的事情,以改善你想什么来实现,但这会回答你在这里问的问题。

+0

bootstrap仅用于css目的。现在,我还没有使用任何引导程序功能..我尝试添加它并告诉你 – sameer 2013-03-20 09:51:29

+1

您仍然可以使用它 - 这只是您的定义函数的参数与您所需的模块数组中的项目不匹配(将我的以你为例) – Lewis 2013-03-20 10:18:02