1

現在、RequireJS 2.0 を試しているため、コードを変更する必要があります。これが myで、 in mymain.jsで起動されました。data-mainindex.phtml

編集:プロジェクト構造を忘れてしまいました。役に立つかもしれません:)

->public

 -> css
 -> js
 app.js
 facade.js
 main.js
 router.js
 ...
  -> collections
  -> libs

   -> backbone
   -> jquery
   -> json2
   -> plugins
   -> require
   -> underscore

 -> templates
...


// Filename: main.js

// Require.js allows us to configure shortcut alias
// There usage will become more apparent futher along in the tutorial.

require.config({
    //Here baseUrl = /js (Loaded in data-main in logged.phtml)
    // 3rd party script alias names (Easier to type "jquery" than "libs/jquery-1.7.2.min")
    paths: {
        jQuery: 'libs/jquery/jquery',
        Underscore: 'libs/underscore/underscore',
        Backbone: 'libs/backbone/backbone',
        JSON: 'libs/json2/json2',
        templates: '../templates'
    },

    // Sets the configuration for your third party scripts that are not AMD compatible
    shim: {
        'libs/plugins/bootstrap-min': ['jQuery'],
        'libs/plugins/jquery.cookies.min': ['jQuery'],
        'jQuery': {
            exports: '$'
        },
        'JSON': {
            exports: 'JSON'
        },
        'Underscore': {
            exports: '_'
        },
        'Backbone': {
            deps: ['Underscore', 'jQuery'],
            exports: 'Backbone'  // attaches "Backbone" to the window object
        }
    }
});

define([
    // Load our app module and pass it to our definition function
    'app',
    'jQuery',
    'Underscore',
    'Backbone',
    'JSON'
], function(App) {
    // The "app" dependency is passed in as "App"
    // Again, the other dependencies passed in are not "AMD" therefore don't pass a parameter to this function
    App.initialize();
});

このファイルに「ルーター」を依存関係とともに追加しようとしましたが、何も変わっていないので、役に立たないと思いました。

App を呼び出すときに読み込まれる app.js は次のとおりです。

define([
    'jQuery',
    'Underscore',
    'Backbone',
    'JSON',
    'router', // Request router.js
    'i18n!nls/langs',
    'facade',
    //'order!libs/plugins/jquery.backstretch.min'
    //'libs/plugins/backbone.validation.min'
], function($, _, Backbone, JSON, Router, langs, facade) {
var initialize = ...
...
...
return {
        initialize: initialize
    };
});

ここに問題があります。私のrouter.js定義では、 a を使用しconsole.logましたが、正しいオブジェクトを返していることがわかりました。

しかし、私が呼び出すrouterと、未定義app.jsのままです。router私はおそらく間違いを犯しましたが、私はそれを見つけることができません。

編集:router.jsコードを追加

require([
    'jQuery',
    'Underscore',
    'Backbone',
    'JSON',
    'facade',
    'models/UserModel',
    'libs/plugins/jquery.cookies.min'
], function($, _, Backbone, JSON, facade, User, cookies){
    var AppRouter = Backbone.Router.extend({
...
    });

    var app_router = new AppRouter;
        // Start Backbone history a neccesary step for bookmarkable URL's
        Backbone.history.start();
    return app_router;
});
4

1 に答える 1

3

あなたのrouter.jsファイルは AMD モジュールを正しく定義していません。defineではなく、を使用する必要がありますrequire

于 2012-07-30T18:38:46.760 に答える