我正在尝试定义一个可以在所有模块中引用的全局对象。但是,在模块中,我无法引用我的路径,并且它说“g”不存在。
在main1.js中,我有这个:
requirejs.config({
paths: {
Underscore: 'lib/underscore/1.3.3/underscore.min',
Backbone: 'lib/backbone/0.9.2/backbone.min',
Globals: 'lib/backbone/ globalVars'
}
});
require([ 'views/pages', 'views/filters'], function(allPages, filters) {
filters.render();
allPages.render();
});
在globalVars.js中,我有这个:
(function() {
var Globals = {
isDemo: false
}
console.log('in globalvars') // this shows in my console
}).call(this);
最后,在view / pages.js中,我有这个:
define([
'Globals',
'Underscore',
'Backbone'
], function(g, _, Backbone){
console.log(g.isDemo) //<-- returns "TypeError: g is undefined"
如果我在main1.js中使用了这样的定义:
define( 'Globals', function() {
return {
isDemo: true
}
})
它运作得很好。我试图弄清楚为什么这不起作用我没有太多运气。我希望能够只包含一个globalVars的路径,而不是在每个需要它的模块中粘贴一个定义块的样板,因为将isDemo更改为false将需要更新许多其他模块页面(main2.js,main3。 js等)。谢谢!
答案 0 :(得分:1)
嗯,首先,您的globalVars.js
不在模块模式中,因此requirejs不知道您尝试注册为模块的内容。如果您更改该文件以使用该模式,例如您添加到main1.js的定义,则应该全部设置。您是不是有理由将其定义为模块?