問題を見つけました。私は自分のコードを調べて、冗長性のいくつかを「最適化」していた(そう思った)。
これの代わりに:
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オブジェクトをインスタンス化するために使用できるコンストラクターを提供するだけです。
これが私が今経験した苦痛を誰かに救うことを願っています。