尽管文件被加载,但仍要求给出“未加载”消息

时间:2012-08-25 00:11:42

标签: requirejs amd

我的模块定义如下:

define(
    ['backbone', 'View/Sidebar', 'View/ControlBar'],
    function() {
        ...
    }
);

在该模块中有一个名为loadView的方法,它按如下方式分配变量:

loadView: function(name, bootstrap_function, into) {
    var _class  = require('View/'+name);
    ...
}

因此,我们可以看到定义调用(第一个arg)正在加载View/SidebarView/ControlBar。当我使用require('Sidebar')时,我没有错误,但如果我使用require('ControlBar'),我会得到臭名昭着的:

Error: Module name "View/ControlBar" has not been loaded yet for context: _

http://requirejs.org/docs/errors.html#notloaded

我已经重新编写,复制并粘贴,验证它已加载到Firebug等等,但在我的生活中无法解决为什么我会100%得到此错误。

1 个答案:

答案 0 :(得分:0)

我认为这与如何调用参数需要有关。我发现以下引发了错误

define(
    ['mymodule1', 'mymodule2'],
    function(mod1, mod2) {
        ...
        var x = require('mymodule2');
        ...
    }
);

以下情况不是:

define(
    ['mymodule1', 'mymodule2'],
    function() {
        ...
        var x = require('mymodule2');
        ...
    }
);

不同之处在于加载的模块是否被声明为函数的参数。至少这是我认为的方式,然而,它并没有多大意义......