我按照本页http://weblog.bocoup.com/organizing-your-backbone-js-application-with-modules
所述组织了我的Backbone应用程序对于那些没有阅读过文章的人,我会简要解释一下这个想法: 我定义了包含所有模块的单个变量。
var Application = {
module: function(){
var modules = {};
return function(name){
if (typeof modules[name] == 'undefined')
{
modules[name] = {
Model: {},
Collection: {},
Views: {},
}
}
return modules[name];
};
}()
};
Application.module是一个按名称返回模块的函数。然后我将我的应用程序模块定义如下:
(function(chat){
chat.Model = Backbone.Model.extend({ ... }),
chat.Collection = Backbone.Collection.extend({ ... }),
etc.
})(Application.module('Chat'));
一切似乎都没问题 - 所有代码都被分成了模块,但是当我试图从模块的一个类中实例化一个变量时。
$(document).ready(function(){
var foo = new Application.module('Chat').Collection();
});
上面的代码给了我Backbone的“Uncaught TypeError:无法读取未定义的属性'bind'错误”我无法理解为什么?
答案 0 :(得分:0)
我上周也看到了这个错误...你是否正确地包含了underscore.js? 在我的情况下,我在页面中包含了underscore.js,但是在backbone.js引用之后。
下划线.js真的必须在骨干可以做之前加载:)
这样做:
<script src="underscore.min.js"></script>
<script src="backbone.min.js"></script>
答案 1 :(得分:0)
我强烈建议使用[require] [1]。 它非常容易实现,您可以为所有.js库指定依赖关系。
如果你探究它,你将无法生存。
在这里你可以看到一个如何工作的例子: https://github.com/charnekin/api/blob/master/js/main.js