1

backbone.js で単一ページのサイトを構築しています。コードをモジュール化するために require.js を使用していますが、URL のバックボーン ルーターの初期化に問題があります。require.js を使用してメインの js ファイルをロードします。

enter code here
//App Namespace
var Chrono = Chrono || {};
//App Config Namespace
Chrono.Config = Chrono.Config || {};
//App Views Namespace
Chrono.Views = Chrono.Views || {};

//Config
Chrono.Config = {
    url:"http://localhost/chronotech/",
    site_url:"http://localhost/chronotech/index.php/",
    data_source:"http://localhost/chronotech/assets/datasource/"
};

require.config({
    paths : {
        'backbone': 'libs/backbone',
        'jquery':'libs/jquery.min',
        'underscore':'libs/underscore',
        'text':'libs/require/text'
    },
    baseUrl : 'assets/js'
});

require(
    ['require', 'underscore', 'backbone', 'jquery'],
    function(require,_, Backbone, $) {
        require(['app'],
            function(require) {
        } );
    } );

app.js は次のようになります。

define(['backbone','routers/workspace'],
    function( Backbone,Workspace) {
        $(function () {
            var space = new Workspace();
        } );
    } );

そして、ルーターファイルは次のようになります

define(['jquery','backbone'],
    function($, Backbone) {

        var Workspace = Backbone.Router.extend( {
            routes: {
                "about":"aboutPage",
                "team":"teamPage",
                "contact":"contactPage",
                "work":"portfolioPage",
                "products":"productPage"
            },
            aboutPage : function() {
                alert("about");
            },

            teamPage : function() {
                alert("team");
            },

            contactPage: function() {
                alert("contact");
            },

            portfolioPage : function() {
                alert("work");
            },

            productPage : function() {

            }
        } );

        return Workspace;
    } );

ページをロードすると、「Uncaught ReferenceError: $ is not defined」、「Uncaught TypeError: null のプロパティ 'Router' を読み取れません」というエラーが表示されます。私は何を間違っていますか?

4

1 に答える 1

0
define(['backbone','routers/workspace'],
    function( Backbone,Workspace) {
        $(function () {
            var space = new Workspace();
        } );
    } );

別ファイルですか?$ を使用するには、jQuery をロードする必要があるのではないでしょうか?

于 2012-05-30T11:48:58.943 に答える