Dojo 拖动dnd项目会生成“dnd”;此.manager.nodes[i]为null“;

Dojo 拖动dnd项目会生成“dnd”;此.manager.nodes[i]为null“;,dojo,drag-and-drop,Dojo,Drag And Drop,我使用Dojo1.3.1,目前基本上在FF3.5下 我有一个dnd源,它也是一个目标。我通过克隆模板项,以编程方式在其中添加了一些节点。用户的目的是使用dnd订购物品。对于一个或两个操作是可以的,然后我在Firebug中得到了“this.manager.nodes[I]为null”错误,然后不再考虑dnd操作 我的HTML(jsp),部分: <div id="templates" style="display:none"> <div class="dojoDndItem act

我使用Dojo1.3.1,目前基本上在FF3.5下

我有一个dnd源,它也是一个目标。我通过克隆模板项,以编程方式在其中添加了一些节点。用户的目的是使用dnd订购物品。对于一个或两个操作是可以的,然后我在Firebug中得到了“this.manager.nodes[I]为null”错误,然后不再考虑dnd操作

我的HTML(jsp),部分:

<div id="templates" style="display:none">
<div class="dojoDndItem action" id="${act.name}Template">
<fieldset>
  <legend class="dojoDndHandle" >${act.name}</legend>
  <input id="${act.name}.${parm.code}." type="text" style="${parm.style}"
    dojoTypeMod="dijit.form.ValidationTextBox"
    /><br>
</fieldset></div>
</div>

感谢您的帮助……

好的,最后,似乎只需使用:

actionList.insertNodes(false, [ actNode  ]);
而不是

actionList.insertNodes(true, [ actNode  ]);

修复了pb。

您拥有的看起来不错。添加/删除项目后,是否在dojo.dnd.Source上调用sync()?你能发布你的源代码的HTML吗?谢谢你的评论,赛斯。您认为调用sync()会更好吗?我认为解析就足够了。HTML源代码非常庞大:正如我发现的那样,执行“insertNodes(false…”似乎可以修复pb,您真的需要它吗?如果您直接调用源方法,则不需要调用sync。如果you在源代码之外的源代码下操作DOM节点,则应调用sync方法。
actionList.insertNodes(true, [ actNode  ]);