我知道论坛上有很多关于这个主题的问题,但我仍然找不到答案......
我有基于 jQuery 的 JS 应用程序。现在我必须对一些基于 Dojo 的小部件进行一些集成。我想仅在必要时加载 Dojo 和小部件,因此希望异步执行此操作。我将 Dojo 存储在我的站点上,因此请从我的空间加载它。
这是我尝试在 jQuery 中使用的代码:
$.getScript("/Content/3rd/dojo/dojo/dojo.js")
.done(function (script, textStatus) {
dojo.ready(function () {
dojo.require("dojo.io.script");
alert('Dojo ready!')
});
})
.fail(function (jqxhr, settings, exception) {
alert('error!');
});
当我尝试调用dojo.require("dojo.io.script");
异步请求所需的调用时,我的问题从一开始就开始了,我看到它尝试从以下 Url 加载 dojo.io.script - '/Example/io/script.js' 而这并不完全是它所在的地方。我怀疑我错过了一些配置问题,但不明白是哪一个......有人可以帮我解决它吗?
也许这是一个微不足道的问题,但我从未使用过 Dojo,只需要与基于 Dojo 的小部件进行快速集成,我的主要应用程序是 jQuery ......
解决方案:
以防万一有人感兴趣,我使用下一个脚本来加载小部件:
// Load Dojo and scripts for JSDraw2 asyncronously
dojoConfig = {
baseUrl: "/Content/3rd/dojo-1.8.3/dojo"
};
$.getScript("/Content/3rd/dojo-1.8.3/dojo/dojo.js")
.done(function (script, textStatus) {
dojo.ready(function () {
dojo.require("dojo.io.script");
var deferred = dojo.io.script.get({ url: "/Content/3rd/JSDraw2.1.4/JSDraw2.js" });
deferred.then(function () {
// init the Dojo widget...
oThis.jsDraw = new JSDraw(oThis.element.get(0));
}, function () {
alert('Cannot load Scilligence.JSDraw2.js');
});
});
})
.fail(function (jqxhr, settings, exception) {
alert('Cannot load Dojo.js');
});