1

web appは別のApps(app1、app2)に分割することにしました。

なぜjs/app1.js私は得るの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/app1.js

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

1 に答える 1

1

require.jsでは、必要なファイルの1つにエラーがある場合、エラーとして表示されないことがありますが、戻り値は未定義になります。あなたの場合、appinjs/app1/app1.jsは未定義である可能性があります。これは、のエラーが原因である可能性がありますjs/mainApp.js

指定したコードから、空の文字列をjs/mainApp.js含むdefineステートメントがありますが、そのApp関数に渡されることを期待しています。空の文字列を削除して、空のリスト([])をに渡し、そこで関数にdefine渡さないようにしてください。App

実際のコードにこれらの構文の問題がないのにまだ問題が発生する場合はundefined、質問のコードスニペットを更新してください。

これを試して:

js / mainApp.js

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ライブラリの正しいパスを指定することを忘れないでください。

于 2012-06-16T20:57:32.107 に答える