使用Require.js加载我的模块的依赖项时遇到问题。基本上我有以下模块,我在其中定义了Backbone Model的扩展。
define(["models/services/ProjectServices"],
function (ProjectServices) {
var SomeModel = Backbone.Model.extend({
sample: function () {
var servicesFromDependency = ProjectServices; //undefined
var projectServices = window.require.s.contexts._.defined["models/services/ProjectServices"]; //defined and Ok
}
});
return SomeModel;
}
);
在这个模块中,我想使用已定义的ProjectServices模块。为此,我将其添加为依赖项。问题是在定义的示例函数中,ProjectServices显示为未定义。但是,如果我直接查看需要定义的模块,它正确地显示在那里,我可以使用它(虽然我不想,因为我不喜欢以这种方式破解它)。为了添加更多上下文,我也在其他模块上使用这个ProjectServices依赖项,并通过define函数正确加载它。
有关为什么不加载模块的任何建议?
答案 0 :(得分:1)
我唯一能想到的是一个可能的循环引用,意味着两个模块相互需要(不应该是这种情况)。
正如您所说,require在其他模块中运行良好,不应该是由于所需模块中缺少return语句或错误的路径。 (无论如何你可能会检查这个)。
答案 1 :(得分:1)
在模块中尝试:
var ProjectServices = require('models/services/ProjectServices');
我认为在很多情况下,不需要窗口全局分配,我试图避免使用requirjs。