我发现了问题。我一直在检查我的代码并“优化”(我想)一些冗余。
而不是这个:
define(["backbone"], function( Backbone ){
var model = Backbone.Model.extend({
myfunc : function(){ /*do stuff */}
});
return model;
});
我已经更改了一堆代码,如下所示:
define(["backbone"], function( Backbone ){
return Backbone.Model.extend({
myfunc : function(){ /*do stuff*/ }
});
});
不是问题吧?大多。
我还使用了我在另一篇文章中读到的关于通过返回实例化模型从 require.js 模块获取单例功能的漂亮技巧!酷...主要是。
我有这个:
define(["backbone"], function( Backbone ){
var singleton = Backbone.Model.extend({
myfunc : function(){ /*do singleton stuff*/ }
});
// because require.js only runs this code once, this essentially creates a singleton!
return new singleton();
});
效果很好!
然后我就怂了...
define(["backbone"], function( Backbone ){
return new Backbone.Model.extend({
myfunc : function(){ /*do singleton stuff... no more!*/ }
})();
});
我开始得到我的has no method 'apply'
错误。
我花了 2 天的大部分时间和很多挫折来追查问题,我终于从这篇文章中得到了答案:
新 Backbone.Model() 与 Backbone.Model.extend()
它很好地解释了如何实例化 Backbone.Model 但 Backbone.Model.extend 只是为您提供了一个构造函数,然后您可以使用它来实例化自定义 Backbone.Model 对象。
我希望这可以减轻我刚刚经历的痛苦。