dojo.place的oncomplete事件

dojo.place的oncomplete事件,dojo,Dojo,我有很多ajax调用,内容由dojo.place插入。我在新内容中有dojo小部件,因此我必须在内容“放置”后执行dojo.parser.parse() 问题是我找不到执行这个的方法。如果我把代码放在下一行,我会很快被执行。我不得不把它放在setInterval命令中,但这是一个垃圾解决方案 dojo上的oncomplete事件。放置任何人。非常感谢您的帮助。不幸的是,您需要设置超时,因为浏览器不会同步呈现DOM更改。正如Opera博客中所解释的: 下面是一个伪代码示例: headlineEle

我有很多ajax调用,内容由dojo.place插入。我在新内容中有dojo小部件,因此我必须在内容“放置”后执行dojo.parser.parse()

问题是我找不到执行这个的方法。如果我把代码放在下一行,我会很快被执行。我不得不把它放在setInterval命令中,但这是一个垃圾解决方案


dojo上的oncomplete事件。放置任何人。非常感谢您的帮助。

不幸的是,您需要设置超时,因为浏览器不会同步呈现DOM更改。正如Opera博客中所解释的:

下面是一个伪代码示例:

headlineElement.innerHTML = "Please wait...";
performLongRunningCalculation();
headlineElement.innerHTML = "Finished!";
在Internet Explorer和Mozilla中 文本“请稍候…”将永远不会显示 显示给用户,如更改所示 仅在整个脚本之后渲染 已经完成了。另一方面,在歌剧中 另一方面,“请稍候…”文本是 在计算结束时显示 跑步

SO中几乎没有类似的问题:


如果您从xhrGotten html创建DOM节点,比如

var d = document.createElement("div");
d.innerHTML = returned_html;
然后可以解析新的div,在使用dojo.place将新节点添加到文档之前创建小部件

dojo.parser.parse(d);
dojo.place(d, ref_node, "last");

place()是同步的,因此在place调用之后立即调用解析器应该不是问题。听起来问题在于您在XHR完成之前调用了解析器。

您的服务返回的数据是什么样子的?你能以编程方式与Delcarative方式创建DIJIT吗?