我正在开发一个项目,要求从另一台服务器加载一些自定义Dojo小部件。
我使用dojo._xdResourceLoaded(function()根据Dojo - Issue loading widget cross-domain
的建议包装所有内容我收到此错误
TypeError:dojo._xdResourceLoaded(...)不是一个函数,但是我的widget工作。不知道为什么会抛出这个错误
我们正在使用dojo 1.6。
dojo._xdResourceLoaded(function(){
return {
depends: [
["provide", "widgets.test"],
["require", "dijit._Widget"],
["require", "dijit._Templated"]
],
defineResource: function(dojo) {
///////////////////////////////
/// Begin standard declaration
dojo.provide("widgets.test");
dojo.require("dijit._Widget");
dojo.require("dijit._Templated");
dojo.declare("widgets.test", [dijit._Widget, dijit._Templated], {
// Our template - important!
templateString: dojo.cache("widgets.test", "templates/Widgettest.html"),
postCreate: function(){...
答案 0 :(得分:0)
链接线程中的回复并不正确。与所有用户代码一样,您的代码不应调用Dojo对象的下划线(私有)方法。这些方法仅供Dojo代码使用。
如果您正在编写使用旧版XD加载器跨域加载依赖项的模块,则需要要求所有跨域依赖项,然后在dojo.ready
中包装使用这些依赖项的代码:
dojo.provide("widgets.test");
dojo.require("dijit._Widget");
dojo.require("dijit._Templated");
dojo.ready(function () {
dojo.declare("widgets.test", [ dijit._Widget, dijit._Templated ], { /* … */ });
});
dojo.ready
在加载所有异步依赖项后执行回调。
毋庸置疑,AMD比这要好得多,因此只要你有能力,升级到Dojo 1.7+并使用AMD模块将是最好的解决方案。