我發現了這個問題。我一直在檢查我的代碼,並「優化」(所以我認爲)一些冗餘。
取而代之的是:
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天,很多無奈的大部分追查問題,我終於得到了答案,從這個帖子:
new Backbone.Model() vs Backbone.Model.extend()
它解釋很好,你如何實例化骨幹。 Model但Backbone.Model.extend僅僅爲您提供了一個構造函數,您可以使用它來實例化一個自定義的Backbone.Model對象。
我希望這節省了一些人我剛剛經歷過的痛苦。