0

我正在处理一个需要从另一台服务器加载一些自定义 Dojo 小部件的项目。

我根据Dojo 的建议用 dojo._xdResourceLoaded(function() 包装所有内容 - 跨域问题加载小部件

我确实收到了这个错误

TypeError: dojo._xdResourceLoaded(...) 不是函数,但我的小部件有效。不知道为什么会抛出这个错误

我们正在使用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(){...
4

1 回答 1

0

链接线程中的回复并不正确。与所有用户代码一样,您的代码不应调用 Dojo 对象的下划线(私有)方法。这些方法仅供 Dojo 代码使用。

如果您正在编写使用旧版 XD 加载程序跨域加载依赖项的模块,则需要 require 所有跨域依赖项,然后将使用这些依赖项的代码包装在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 模块将是最好的解决方案。

于 2013-10-17T02:49:36.160 回答