2012-05-22 43 views
0

我试图按照这里的基本的cometd例如Hello World示例:http://dojotoolkit.org/reference-guide/1.7/dojox/cometd.html的cometd与道场

它使用旧的模块加载,所以我尝试等价如下:

require(["dojo/ready","dojo/io/script","dojox/cometd","dojox/cometd/callbackPollTransport"], function(ready, dontcare, cometd) { 
    ready(function(){ 
     cometd.init('http://localhost:8080/MyCometD/cometd'); 
     comted.subscribe("/test", function(msg){ 
      console.debug(msg); 
     }); 
    }); 
}); 

这没有按”并且我认为它与加载模块有关 - 由于ready函数中的代码根本不执行,所以存在某种无声错误。我发现,当“dojox/cometd”require语句存在时,ready函数中的代码不会执行。

运行例如:http://jsfiddle.net/Q9W8f/2/

例与DojoX中/ comted删除:http://jsfiddle.net/mMs2h/4/

我还没有与新的模块加载器那么多,所以我敢打赌,我只是有一些简单的误解工作。

帮助!

回答

1

看起来你是正确的,并且对于从未加载的模块需求存在“等待循环”。这可能是dojox.cometd中的任何需求,您需要重写代码库以进行修复。

我在RollingListPane上也有类似的问题,也在dojox仓库中 - 开发人员说'我们是100%符合AMD的1.7',但dojox中的X是实验的简称。 dojox模块的开发不是由核心djtk团队完成的,并且仍存在毛刺。

尝试让初学者避免使用在每个模块上执行>>内置宏的CDN。在使用AMD时,这往往会失败。相反,下载压缩包,并使用一个本地副本 - 不压缩(道场释放-1.7.2- SRC

+0

谢谢,我切换到旧的包加载样式,并且我得到了这个问题 – Lightbeard

+0

我刚刚尝试了一个更新版本的cometd(2.5),并且最新版本与AMD一起工作 – Lightbeard