1

我有一个定义如下的模块:

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

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

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

因此,我们可以看到这两个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% 的时间都会收到此错误。

4

1 回答 1

0

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

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

而以下没有:

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

区别在于加载的模块是否被声明为函数的参数。至少这在我看来是这样的,但是,它没有多大意义……

于 2012-08-27T15:31:33.007 回答