我一直在尝试使用dojo.require(If)
有一个局部变量来动态加载模块基于条件的页面上。
// note: dojo v1.4 djConfig = { debugAtAllCosts: true };
实施例1(不工作):
(function() { var nameOfClass = "Two"; dojo.require("my.namespace." + nameOfClass); dojo.addOnLoad(function() { var oneOrTwo = new my.namespace[nameOfClass](); }); }());
错误:的ReferenceError:未定义nameOfClass。
实施例2(不工作):
(function() { var nameOfClass = "Two"; dojo.requireIf(nameOfClass == "One", "my.namespace.One"); dojo.requireIf(nameOfClass == "Two", "my.namespace.Two"); dojo.addOnLoad(function() { var oneOrTwo = new my.namespace[nameOfClass](); }); }());
错误:的ReferenceError:未定义nameOfClass。
实施例3(作品):
(function() { window.nameOfClass = "Two"; dojo.requireIf(window.nameOfClass == "One", "my.namespace.One"); dojo.requireIf(window.nameOfClass == "Two", "my.namespace.Two"); dojo.addOnLoad(function() { var oneOrTwo = new my.namespace[nameOfClass](); }); }());
出于某种原因,它看起来好像需要和requireIf只允许在他们里面的全局变量。 那是一个电流限制,还是我只是做错了什么?
更新1:
因此,如果我理解你(@Maine,@jrburke)正确,这是debugAtAllCosts的限制? 如果上面的代码被编译为跨域(添加XD文件前缀/后缀),并执行 - 如预期,将工作?
如果是这样的话,那么什么是本地测试,将跨域被执行的代码,未做实际构建的正确方法?
这也让我质疑预解析考虑dojo.require(S)的动机。 如果loader_xd不会(或者说不可能)预解析,为什么是方法,以用于测试/调试这样创造出来的?
更新2:
由于在更新1以上没有与之密切相关的一个两个问题,我搬到他们出到一个单独讨论 。