0

我正在尝试定义一个可以在所有模块中引用的全局对象。但是,在模块中,我无法引用我的路径,并且说“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)。 js 等)。谢谢!

4

1 回答 1

1

好吧,首先,您globalVars.js不在模块模式中,因此 requirejs 不知道您要注册为模块的内容。如果您更改该文件以使用该模式,例如您添加到 main1.js 中的定义,那么您应该已准备就绪。您没有将其定义为模块是否有原因?

于 2012-12-04T16:48:47.700 回答