2

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 メソッドと何か関係があるような気がします? )

注:これらの記事を読みましたが、このようなものをセットアップする方法は明確ですが、コレクションオブジェクトが空である理由は明確ではありません

4

0 に答える 0