【问题标题】:Backbone.js initializing multiple router.js filesBackbone.js 初始化多个 router.js 文件
【发布时间】:2013-03-09 07:59:55
【问题描述】:

我正在使用 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
};  
}); 

部分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 和其他 sectionRouter.js 文件。

编辑

是否可以在mainRouter内部初始化sectionRouter?

【问题讨论】:

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


    【解决方案1】:

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

    试试:

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

    可能还有其他事情可以改进您想要实现的目标,但这将回答您在此处提出的问题。

    【讨论】:

    • bootstrap 仅用于 css 目的。目前,我没有使用任何引导函数。我尝试添加它并告诉你
    • 您仍然可以使用它 - 只是您定义函数的参数与所需模块数组中的项目不匹配(将我的示例与上面的示例进行比较)
    猜你喜欢
    • 1970-01-01
    • 2012-08-30
    • 2012-06-27
    • 2023-02-24
    • 1970-01-01
    • 2012-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多