0

我是新来要求js和我使用布局管理器的骨干。我已经粘贴下面我的代码,我没能获得布局管理工作,我得到这个错误:使用requirejs加载LayoutManager中的问题

"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; 
}); 

回答

0
function($, _, Backbone, LayoutManager 

在这里你的名字布局管理。

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

这里您尝试使用它作为Backbone.LayoutView ......不存在(因此未定义)。尝试

App.Views.HelloView = LayoutView.extend({ 

你这里的骨干VAR是从全球一个不同,认为requirejs :)

+0

以及问题是我使用的是版本管理器的新版本(0.80),并在该LayoutView中除去。 – user1184100 2013-04-07 13:08:49

0

布局管理器的新版本不使用“LayoutView”创建视图。使用Backbone.Layout.extend({...})来创建你的视图...玩得开心..;)