Backbone和RequireJS共享集合不是持久的

时间:2013-02-28 10:27:19

标签: javascript backbone.js requirejs

我有一个主干+ requireJS应用程序,我使用名为Globals的AMD模块将一些集合存储在Global命名空间中。这样设置如下:

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);
      }
    });
});

我的问题是为什么我的Globals.collections在myOtherView.js对象中是一个空对象,即使它已在myView.js中设置。 console.log的结果是:

Object { myCollection: d }

Object {}

我简化了上面的代码但是案例保持不变,由于某种原因,全局对象属性不会在模块中保持持久性。

有关为何会发生这种情况的提示? (我觉得它与_.each方法有关?

注意:我已经阅读了这些文章,但是虽然它确实清楚如何设置这样的东西,但它并没有说明为什么我的集合对象是空的

0 个答案:

没有答案