为什么我无法从requirejs配置访问我的REST URL

时间:2014-01-02 12:45:55

标签: javascript requirejs

我正在尝试在requirejs配置中设置REST网址。这是我的配置:

  require.config({
    config: {
      url: 'http://test.herokuapp.com'
    }
  });

然后我尝试访问模块中的url:

define(function(require, exports, module) {
  'use strict';

  var Backbone = require('backbone');
  var url = module.config().url;

  var SessionModel = Backbone.Model.extend({
    url: url + '/login'
  });
  return SessionModel;
});

然后我启动了我的应用程序,当我尝试点击该网址时出现此错误:

POST http://99.44.242.76:3000/app/undefined/login 404 (Not Found) 

我的url未定义。如何在模块中访问我的配置文件?

1 个答案:

答案 0 :(得分:1)

config设置适用于每个模块config设置是具有键模块名称的对象,module.config()仅返回与调用它的模块名称关联的值。因此,您必须将模块名称放在配置中:

require.config({
  config: {
    my_module: {
      url: 'http://test.herokuapp.com'
    }
  }
});

my_module应该是模块的实际名称。然后,url设置将显示为module.config().url(这是您已经使用的设置)。

如果您希望url设置可供所有模块使用,您可以做的一件事就是创建一个仅导出其配置的模块。例如,如果我将此模块称为global

require.config({
  config: {
    global: {
      url: 'http://test.herokuapp.com'
    }
  }
});

然后global.js可能包含以下内容:

define(function(require, exports, module) {
  'use strict';

  return module.config();
});

然后你问题中的模块可能是这样的:

define(function(require, exports, module) {
  'use strict';

  var global = require("global");
  var Backbone = require('backbone');

  var url = global.url;

  var SessionModel = Backbone.Model.extend({
    url: url + '/login'
  });
  return SessionModel;
});