我有一个骨干网 + 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方法有关?)
注意:我已经阅读了这些文章,但是虽然它确实清楚地说明了如何设置这样的东西,但并没有清楚地说明为什么我的集合对象是空的