【发布时间】:2012-06-29 07:59:36
【问题描述】:
我已经配置 requirejs 来加载核心库(jquery、下划线、主干)。 现在我想添加我的主干模型、控制器、视图等以异步加载
我发现了很多关于这个主题的教程和很多“现成的”样板,不幸的是我提到大多数方法已经过时或相当复杂(即使有更好的方法)。
一个例子是我如何为主要库配置 requirejs: https://stackoverflow.com/a/10914666/1309847
那么如何使用简单有效的 Requirejs 配置加载主干视图、模型、集合、路由器、控制器和模板?
我听从了你的建议,但遇到了一些奇怪的错误
main.js
require.config({
paths: {
jquery: 'vendors/jquery/jquery',
underscore: 'vendors/underscore/underscore',
backbone: 'vendors/backbone/backbone'
},
shim: {
underscore: {
exports: '_'
},
backbone: {
deps: ['underscore', 'jquery'],
exports: 'Backbone'
}
}
});
require(['app'], function(app){
});
app.js
define(['jquery', 'underscore', 'backbone'], function($, _, Backbone){
var Message = new Backbone.Model.extend({
//idAttribute: '_id',
//defaults: { body: '' }
//url: function(){ return this.id ? '/messages/' + this.id : '/messages'; }
});
var newMessage = new Message({ body: 'hi' });
newMessage.save();
});
app.js中出现错误:
Uncaught TypeError: Object [object Object] has no method 'apply'
当我评论新的 Backbone.Model.extend 部分时,我不再收到任何错误。
【问题讨论】:
-
加载下划线或主干似乎有问题。在 app.js 的第二行放置一个断点并检查“_”或“Backbone”是否未定义。在这种情况下,请检查您的路径以及寻找兼容性问题的库版本。如果一切都失败了,请尝试使用 AMD 版本的 Backbone 和 undercore:github.com/amdjs
-
我做了一个包含所有三个参数的console.log。所有三个看起来都有效,但我已经指定了更多错误。当我想创建一个新的 Message 实例时会发生这种情况。 (我也可以取消注释模式,但实例化它会给出错误)
-
好的,去掉“var Message = new Backbone.Model.extend”这一行中的“new”。它应该是 var Message = Backbone.Model.extend
-
就是这样 :) 感谢您的帮助,我永远不会独自管理
-
没问题,很高兴为您提供帮助
标签: backbone.js requirejs