如果我命名模块,则RequireJS依赖项未定义
我正在使用Durandal,我正在尝试将此模块用作另一个模块的依赖项:如果我命名模块,则RequireJS依赖项未定义,requirejs,durandal,Requirejs,Durandal,我正在使用Durandal,我正在尝试将此模块用作另一个模块的依赖项: define('Beer', function () { return function Beer (name, brewery) { this.name = name; this.brewery = brewery; }; }); 在另一个模块中,我执行以下操作: define(['knockout', 'models/Beer'], function (ko, Beer)
define('Beer', function () {
return function Beer (name, brewery) {
this.name = name;
this.brewery = brewery;
};
});
在另一个模块中,我执行以下操作:
define(['knockout', 'models/Beer'], function (ko, Beer) {
return {
displayName: 'Add',
name: ko.observable(),
brewery: ko.observable(),
save: function () {
var beer = new Beer(this.name(), this.brewery());
console.log(beer);
}
}
});
我的javascript被加载,因为我在路径中定义了它(并且我签入了Firebug)。但是我的第二个模块中的Beer
参数未定义。我不知道为什么,因为我的啤酒模块确实返回了一些东西(它返回函数)。我还能看什么?我发现的大多数解决方案是(第一个)模块没有返回任何东西,但我的模块显然返回了任何东西
更新
显然,当我删除啤酒模块的名称时,它会起作用:
define(function() {
return function Beer (name, brewery) {
// ...
}
});
虽然这看起来很有效,但对我来说却不行。有人能告诉我为什么吗?在您的方法中,您将命名模块与匿名模块混合使用 如果将模块命名为“Beer”,则需要使用名称,而不是路径:
require(['Beer'], function (Beer) {
var a = new Beer();
});
如果从Beer模块中删除该名称,则可以通过以下路径加载匿名模块:
require(['path/to/Beer'], function (Beer) {
var a = new Beer();
}
编辑:您链接到的主题不使用RequireJS,尽管它看起来很相似