0

私はjsを必要とするのは初めてで、レイアウトマネージャーでバックボーンを使用しています。以下にコードを貼り付けましたが、レイアウト マネージャーを動作させることができず、次のエラーが発生します。

 "Uncaught TypeError: Cannot call method 'extend' of undefined" 

レイアウトマネージャーが使用されている行 (Backbone.LayoutView.extend)

Main.js

require.config({
paths: {
    jquery: 'lib/jquery-1.9.1.min',
    underscore: 'lib/underscore-min',
    backbone: 'lib/backbone-min',
    handlebars: 'lib/handlebars',
    layoutManager : 'lib/backbone.layoutmanager'
    mousewheel : 'lib/jquery.mousewheel.min'
},
shim : {
    'backbone' : {
        deps: ['jquery', 'underscore' ],
        exports: 'Backbone'
    },
    'layoutManager' : {
        deps: ['jquery', 'underscore', 'backbone'],
        exports: 'LayoutManager'
    },
    'mousewheel' : ['jquery']
}

});

require(["jquery", "underscore", "backbone", "layoutManager", "handlebars","mousewheel", "common"],function($, _, Backbone, LayoutManager, Handlebars,mousewheel, App) {


App.Views.HelloView = Backbone.LayoutView.extend({
    template : '#hello_tmpl1',
});

App.Layouts.AppLayout = new BackBone.Layout({

    template : '#layout',
    views : {
        ".helloView" : new App.Views.HelloView()
    }
});

$('body').empty().append(App.Layouts.AppLayout.el.render());

});  

Common.js
  define(function(){
    var App = null;
    App = { Models:{}, Views:{}, Collections:{}, Templates:{}, Router:{}, Layouts:{}};

   return App;
});
4

2 に答える 2

0
function($, _, Backbone, LayoutManager

ここでは、LayoutManager という名前を付けます。

App.Views.HelloView = Backbone.LayoutView.extend({

ここでは Backbone.LayoutView... として使用しようとしていますが、これは存在しません (未定義)。試す

App.Views.HelloView = LayoutView.extend({

ここにあるバックボーン変数はグローバル変数とは異なります。requirejs だと思います:)

于 2013-04-07T12:06:47.853 に答える