我是Dojo的新手,我遇到了dojo.require()的问题。我正在使用托管在云中的Dojo版本。我想用dojo.require()加载我自己的模块,但这似乎不起作用。我已经设置了basUrl,但每当我尝试加载模块时,我都会收到有关访问跨域资源的错误(实际发生此错误需要一些时间)。它试图加载的文件是我请求的模块。当我调试时,我可以忽略这个错误,我的模块仍然正确加载。但我无法找出为什么Dojo正试图加载跨域的东西......
这就是我的HTML文件的标题:
<script type="text/javascript">
var dojoConfig = {
isDebug: true,
baseUrl: '../../'
};
</script>
<script src="http://ajax.googleapis.com/ajax/libs/dojo/1.6.1/dojo/dojo.xd.js.uncompressed.js" type="text/javascript"></script>
<script type="text/javascript">
dojo.require("client.apps.customers.overview");
dojo.ready(function () {
overview.open();
});
</script>
“client.apps.customers.overview”是我正在尝试加载的模块。这是overview.js文件的开头如何:
dojo.provide("overview");
dojo.require("dijit._Widget");
dojo.require("dijit._Templated");
答案 0 :(得分:1)
嗯,文件overview.js需要放在client / apps / customers /中(相对于你的baseUrl),dojo.provide调用必须同时给出完整的命名空间和类。在你的情况下:
dojo.provide("client.apps.customers.overview");
答案 1 :(得分:1)
除了Frode关于匹配require和提供声明的建议之外,我认为你需要添加一个额外的配置来告诉dojo在哪里找到&#34; client&#34;名称空间:
dojoConfig = {
/*...*/,
modulePaths: {
client: 'path_to_the_client_folder'
}
};
您可以通过在Firebug / Chrome控制台上查看您执行require调用时当前尝试获取的资源来检查这是否是导致错误的原因。我相信它可能正在寻找&#34;客户&#34;模块在http://ajax.googleapis.com/ajax/libs/dojo/1.6.1/client
的默认位置,(在dojo,dijit和dojox旁边),但你的模块肯定会在其他地方。