2012-08-25 26 views
1

我有一个模块定义如下:要求给予“未装载”消息被装载

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

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

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

因此,我们可以看到View/SidebarView/ControlBar正在由define调用(第一个参数)加载。当我使用require('Sidebar'),我没有错误,但如果我用require('ControlBar')我得到了臭名昭著:

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

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

我已经重新编写,复制和粘贴,证实它是装在萤火虫等等,但不能为我的生活工作,为什么我100%的时间得到这个错误。

+0

我没有看到您发布的代码有任何问题。是否可以发布View/ControlBar,View/Sidebar?也许在View/ControlBar中有一个循环引用需要这个模块? –

+0

不幸的是,自从我发布这个代码后,代码已经大大改变了,我不确定哪些提交在这里相关。有一个循环参考是完全可能的,但是,也许是这样做的。谢谢。 – GTF

回答

0

我认为这与如何调用参数有关。我发现,而下面没有下列引发错误

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

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

的区别是加载的模块是否被声明为函数的自变量或没有。至少这是我认为的方式,但是,这并没有太大意义...