dojo dnd在字符串Type中不起作用

时间:2014-05-15 02:48:07

标签: javascript dojo drag-and-drop

我在道场学习dnd。我通过ajax获得的json数据。并显示动态字符串数据已创建div形式。适用并且看起来很好。但是dnd不起作用。当我认为因为字符串类型。我征求意见!

 myboard.html

 <script>
require([ "dojo/parser","dojo/dom", "dojo/on", "dojo/request", "dojo/json","dojo/_base/array"
          ,"dijit/Dialog","dijit/form/Button","dijit/form/CheckBox","dojo/query","dojo/dnd/Source","dojo/dnd/Target","dijit/layout/BorderContainer",
        "dijit/layout/TabContainer", "dijit/layout/ContentPane","dijit/layout/LinkPane",
        "dojo/domReady!" ], function(parser,dom,on,request,json,arrayUtil,Dialog,Button,CheckBox,query) {
    parser.parse();
       .....

function addTab(formCount,num){
var cont ='';
        var xhrArgs = {
                url: '/checkData',
                handleAs: "json",
                content:{
                    seq:num
                },
                load: function(data){
                    alert('ajax success:'+data);
 cont+='<div data-dojo-type="dojo/dnd/Source" class="source">'
 arrayUtil.forEach(data,function(item,i){
 cont+='<div class="dnd" data-dnd-type="a">'+data.seq+'</div>';
 cont+='<div class="dnd" data-dnd-type="b">'+data.name+'</div>';
 cont+='<div class="dnd" data-dnd-type="c">'+data.form+'</div>';
 cont+='<div class="dnd" data-dnd-type="d">'+data.desc+'</div>';
 cont+='<div class="dnd" data-dnd-type="e">'+data.writer+'</div>';
 }
 cont+='</div>';
    .....
}

1 个答案:

答案 0 :(得分:0)

您的代码存在一些问题。

首先,您在data.seq循环中使用data.namedata.formforEach(),...但是,我想您要使用item.seqitem.nameitem.form,......代替。

然后第二个问题,你在代码末尾错过了一个括号,关闭了forEach()循环。我想这部分代码位于.....,但我无法确定。

第三个问题是dojo/dnd/Source中的可拖动项目应具有类名dojoDndItem。你的<div>都没有这个类,所以没有一个是可拖动的。

另一个问题是,您没有将cont内的HTML添加到DOM节点,因此永远不会显示它。我想部分代码位于.....,但就像其他问题一样,我无法确定它。

然后最后一个问题是你必须通过Dojo解析器解析你的内容才能使它工作。你可以使用:

来做到这一点
parser.parse(domNode);

其中domNode是用于向其添加HTML字符串的节点。

我修改了您的代码,结果如下:http://jsfiddle.net/n7MxD/