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

zpqajqem  于 2022-11-10  发布在  其他
关注(0)|答案(1)|浏览(123)

我正在使用Backbone.js require.js underscore.js来构建一个应用程序。在我的javascript中,我有一个mainrouter.js文件,它处理菜单选择。
该应用程序被分成几个部分,我希望每个部分都有一个sectionRouter.js文件。
由于某种原因,当尝试加载一个sectionRouter.js时,我得到以下错误
类型错误:未定义区段路由器
这是我的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文件吗?

编辑

是否可以在主路由器内部初始化sectionRouter?

beq87vna

beq87vna1#

你已经在define函数参数列表中添加了bootstrap,但是这个列表与require数组中的模块不匹配,所以SectionRouter没有值(这就是为什么你得到“undefined”)。
请尝试:

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

也许还有其他事情可以改善你试图实现的目标,但这将回答你在这里提出的问题。

相关问题