Globals という AMD モジュールを使用してグローバル名前空間にいくつかのコレクションを格納するバックボーン + requireJS アプリがあります。これは次のように設定されています。
globals.js
define([
'config',
'underscore'
], function(config) {
var globals = {
collections : {}
};
_.extend(globals, config);
return globals;
});
myview.js
define([
'jquery',
'underscore',
'backbone',
'globals',
'collections/MyCollection',
'views/myOtherView',
], function($, _, Backbone, Globals, MyCollection, MyOtherView) {
Globals.collections.myCollection = new MyCollection([]);
console.log(Globals.collections);
_.each(Globals.collection.models, function(myModel){
var myOtherView = new MyOtherView({ model : myModel });
});
});
myOtherView.js
define([
'jquery',
'underscore',
'backbone',
'globals',
'collections/MyCollection',
], function($, _, Backbone, Globals, MyCollection) {
var MyOtherView = Backbone.View.extend({
initialize : function(options){
console.log(Globals.collections);
}
});
});
私の質問は、myView.js で設定されているにもかかわらず、myOtherView.js オブジェクトで Globals.collections が空のオブジェクトである理由です。console.log の結果は次のとおりです。
Object { myCollection: d }
Object {}
上記のコードを簡略化しましたが、ケースは変更されていません。何らかの理由で、グローバル オブジェクトのプロパティがモジュール間で永続化されません。
なぜこれが起こるのかについてのヒントはありますか?( _.each メソッドと何か関係があるような気がします? )
注:これらの記事を読みましたが、このようなものをセットアップする方法は明確ですが、コレクションオブジェクトが空である理由は明確ではありません