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