Backbone.js初始化多个router.js文件

时间:2013-03-20 09:40:51

标签: javascript backbone.js requirejs underscore.js backbone-routing

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

应用程序分为几个部分,我希望每个部分都有一个sectionRouter.js文件。

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

  

TypeError:SectionRouter未定义

这是我的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
};  
}); 

部分路由器:

 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和其他sectionRouter.js文件一起加载。

修改

是否可以初始化mainRouter中的sectionRouter?

1 个答案:

答案 0 :(得分:0)

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

尝试:

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

可能还有其他事情需要改进你想要达到的目标,但这会回答你在这里提出的问题。