Javascript Requirejs+;主干未捕获类型错误:无法读取属性';型号';未定义的
我从脊梁骨开始。我使用Require加载modul,并得到了这个错误。有人能解释一下吗?在user.js文件中,我在尝试创建Backbone.Model.extend时遇到了这个错误。我使用了Backbone.js0.9.10、jqueryv1.9.0、requirejs2.1.4和下划线1.4.4。多谢各位 index.htmlJavascript Requirejs+;主干未捕获类型错误:无法读取属性';型号';未定义的,javascript,backbone.js,requirejs,Javascript,Backbone.js,Requirejs,我从脊梁骨开始。我使用Require加载modul,并得到了这个错误。有人能解释一下吗?在user.js文件中,我在尝试创建Backbone.Model.extend时遇到了这个错误。我使用了Backbone.js0.9.10、jqueryv1.9.0、requirejs2.1.4和下划线1.4.4。多谢各位 index.html <!doctype html> <html lang="en"> <head> <title></tit
<!doctype html>
<html lang="en">
<head>
<title></title>
<!-- Load the script "js/main.js" as our entry point -->
<script data-main="js/main.js" src="js/libs/require/require.js"></script>
<link rel="stylesheet" type="text/css" href="stylesheets/style.css">
</head>
<body>
<div id="container">
<div id="menu"></div>
<div id="content"></div>
</div>
</body>
</html>
app.js
define(['jquery', 'underscore', 'backbone', 'router'], function($, _, Backbone, Router) {
var initialize = function(){
Router.initialize();
console.log('app.js');
};
return {
initialize: initialize
};
});
路由器.js
define([
'jquery',
'underscore',
'backbone',
'views/home/login'
//'views/room',
// 'views/friend',
// 'views/play',
// 'views/money'
], function ($, _, Backbone, loginView) {
console.log('router.js');
var AppRouter = Backbone.Router.extend({
routes:{
'/home':'showHome',
'*actions':'defaultAction'
},
showHome:function () {
loginView.render();
},
defaultAction:function (actions) {
console.log('No route:', actions);
}
});
var initialize = function(){
var app_router = new AppRouter;
Backbone.history.start();
};
return {
initialize: initialize
};
});
login.js(主干视图)
user.js(主干模型)
users.js(主干集合)
我不能上传我的照片。但是您可以在这个链接中看到。也许您的main.js文件中缺少了一些垫片配置,请阅读这里: 您可以尝试添加:
shim: {
'backbone': {
deps: ['jquery','underscore'],
exports: 'Backbone'
}
}
使用@Ingro所说的,并在调用渲染模板时尝试使用默认下划线标记 例如: main.js
require.config({
paths:{
jquery:'libs/jquery/jquery-min',
underscore:'libs/underscore/underscore-min',
backbone:'libs/backbone/backbone-min',
templates:'../templates'
}
});
require(['app'], function (App) {
console.log('____main.js')
App.initialize();
console.log('main.js')
});
require.config({
paths:{
jquery:'libs/jquery/jquery-min',
underscore:'libs/underscore/underscore-min',
backbone:'libs/backbone/backbone-min',
templates:'../templates'
},
shim: {
backbone: {
deps: ['jquery','underscore'],
exports: 'Backbone'
}
}
});
require(['app'], function (App) {
console.log('____main.js')
App.initialize();
console.log('main.js')
});
在任何使用下划线模板的文件中,例如“login.js”,请使用以下命令:
define([
'backbone',
'collections/home/users',
'text!templates/home/login.html'
], function(Backbone, usersCollections, homeLoginTemplate){
var loginView = Backbone.View.extend({
el: $('container'),
render: function(){
var data = {};
var compiledTemplate = _.template(homeLoginTemplate);
this.el.append(compiledTemplate);
}
});
console.log('login.js');
return new loginView;
});
jquery和下划线在主干网请求调用中默认都使用。
我希望这些对您有所帮助。我确信该错误也为您提供了行和堆栈跟踪?var userModel=Backbone.Model.extend({…});你能很清楚错误是什么吗?这方面有什么更新吗?。我得到了同样的错误与完全相同的供应商版本Nope,与垫片配置和相同的插件版本它的工作对我来说很好。。。
shim: {
'backbone': {
deps: ['jquery','underscore'],
exports: 'Backbone'
}
}
require.config({
paths:{
jquery:'libs/jquery/jquery-min',
underscore:'libs/underscore/underscore-min',
backbone:'libs/backbone/backbone-min',
templates:'../templates'
},
shim: {
backbone: {
deps: ['jquery','underscore'],
exports: 'Backbone'
}
}
});
require(['app'], function (App) {
console.log('____main.js')
App.initialize();
console.log('main.js')
});
define([
'backbone',
'collections/home/users',
'text!templates/home/login.html'
], function(Backbone, usersCollections, homeLoginTemplate){
var loginView = Backbone.View.extend({
el: $('container'),
render: function(){
var data = {};
var compiledTemplate = _.template(homeLoginTemplate);
this.el.append(compiledTemplate);
}
});
console.log('login.js');
return new loginView;
});