Dojo DnD:如何在onDndDrop事件上访问新复制的节点? [英] Dojo DnD: how to access newly copied node on onDndDrop event?

查看:184
本文介绍了Dojo DnD:如何在onDndDrop事件上访问新复制的节点?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在处理如下代码。

  01:var c1 = new dojo.dnd.Source('container1 ',{copyOnly:true}); // container1是一个div 
02:var c2 = new dojo.dnd.Source('container2'); // container2是一个div
03:var list = [];
04:for(var i = 0; i <3; i ++){list.push(dojo.create('div')); }
05:c1.insertNodes(false,list);
06:
07:function checkDndCopy(nodes,target){
08:dojo.forEach(nodes,function(node){alert(node.id);});
09:}
10:dojo.subscribe(/ dnd / drop,function(){
11:var mgr = dojo.dnd.manager();
12 :checkDndCopy(mgr.nodes,mgr.target);
13:});

插入到第05行的c1节点的ID为dojoUnique1,donoUnique2,dojoUnique3。
在将一个节点从c1拖到c2的事件中,onDndDrop事件被触发,并且调用了第10-13行中定义的订阅方法


$ b $我预计新复制的节点出现在节点(例如)在行08.但这不是真的。
当dojoUnique1是拖放的目标时,第08行的节点只包含dojoUnique1。



我想修改新复制节点的某些属性, onDndDrop。请让我
知道这样的事情是如何实现的。

解决方案

我不知道,如果是只有(和最好的)方式,但你可以编写自己的节点创建者来覆盖掉掉的节点和头像创建。下面的例子扩展了你的代码,使丢弃的节点变红:

  var c1 = new dojo.dnd.Source('container1',{ copyOnly:true}); // container1是一个div 
var c2 = new dojo.dnd.Source('container2',{creator:nodeCreator}); // container2是一个div

函数nodeCreator(item,hint){
var node = dojo.create(div,{innerHTML:item});
if(hint!=avatar){
dojo.style(node,'color','red');
}
return {node:node,data:item};
}

您可以找到有关编写自己的创作者的更多信息 here 和google


I am working on code like the following.

01: var c1 = new dojo.dnd.Source('container1', {copyOnly:true}); // container1 is a div
02: var c2 = new dojo.dnd.Source('container2');                  // container2 is a div
03: var list = [];
04: for (var i = 0; i < 3; i++) { list.push( dojo.create('div') ); }
05: c1.insertNodes(false, list);
06: 
07: function checkDndCopy(nodes, target){
08:  dojo.forEach(nodes, function(node){ alert(node.id); } );
09: }
10: dojo.subscribe("/dnd/drop", function(){
11:   var mgr = dojo.dnd.manager();
12:   checkDndCopy(mgr.nodes, mgr.target);
13: });

The nodes inserted to the c1 at line 05 have id of "dojoUnique1, donoUnique2, dojoUnique3". On a event of drag and drop a node from c1 to c2, a onDndDrop event is fired and the subscribe method defined in line10-13 is invoked.

I expected that newly copied node appears in the nodes (for example) at line 08. But this is not true. When dojoUnique1 is target of drag and drop, nodes at line 08 contains only dojoUnique1.

I want to modify some attributes of newly copied nodes on the event of onDndDrop. Please let me know how such a thing is realized.

解决方案

I'm not sure, if it is the only (and best) way, but you may write your own node creator to override dropped node and avatar creation. Example below extends your code and makes dropped nodes red:

    var c1 = new dojo.dnd.Source('container1', {copyOnly:true }); // container1 is a div
    var c2 = new dojo.dnd.Source('container2', { creator: nodeCreator }  );   // container2 is a div

    function nodeCreator(item, hint) {
      var node = dojo.create("div", { innerHTML: item }); 
      if (hint != "avatar") {
        dojo.style(node, 'color', 'red');
      }
      return { node: node, data: item };
    }

You can find more information about writing own creators here and in google

这篇关于Dojo DnD:如何在onDndDrop事件上访问新复制的节点?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆