2012-06-15 2 views
1

web app을 다른 Apps (app1, app2)으로 나누기로 결정했습니다.요구 사항을 사용하여 Backbone.Marionette.Application을 얻는 방법

왜 에서 undefined이 나옵니까?
requirejs를 사용하여 app1에서 mainApp에 어떻게 액세스해야합니까? 여기

내 코드입니다 :


JS/main.js

require([ 
    'js/app', 
    'js/app1/app1', 
    'js/app2/app2' 
], 
function (App) 
{ 
    "use strict"; 
    App.initialize(); 
}); 

JS/mainApp.js

define([''], 
function(app) 
{ 
    var mainApp = new Backbone.Marionette.Application(); 

    mainApp.start(); 

    mainApp.initialize = function() { 
     Backbone.history.start(); 
    } 

    return mainApp; 
}); 
필요한 파일 중 하나에 오류가있는 경우

JS/APP1/가끔 오류하지만 반환 값으로 표시되지 않습니다, require.js와

define(['js/mainApp], 
function(app) 
{ 
    console.log(app); // undefined 
}); 

답변

1

을 app1.js 정의되지 않습니다. 귀하의 경우 app (js/app1/app1.js)은 js/mainApp.js의 오류로 인해 정의되지 않았을 가능성이 큽니다.

제공된 코드에서 js/mainApp.jsdefine 문에 빈 문자열이 있지만 App이 전달 될 것으로 예상됩니다. 빈 문자열을 제거하고 빈 목록 ([])을 define에 전달하고 거기에 App을 전달하지 마십시오.

실제 코드에 이러한 구문 문제가 없는데도 여전히 undefined이 표시되는 경우 질문의 코드 조각을 업데이트하십시오.

define(['jquery', 'underscore', 'backbone', 'backbone.marionette'], 
function($, _, Backbone) 
{ 
    var mainApp = new Backbone.Marionette.Application(); 

    // Make sure main app is not undefined here. 
    console.log('mainApp:', mainApp); 

    mainApp.start(); 

    mainApp.initialize = function() { 
     Backbone.history.start(); 
    }; 

    return mainApp; 
}); 

는 JS 라이브러리에 대한 올바른 경로를 제공하는 것을 잊지 마세요

JS/mainApp.js :

이보십시오.

+0

+1 감사합니다. 사실 나는 js 파일에 오류가 없다고 확신합니다. 내 질문을 다시 작성 http://stackoverflow.com/questions/11070038/how-to-define-controller-router-and-app-in-the-right-order-using-requirejs. 이것을 봐주세요. –