2009-07-14 46 views
2

我正在使用尝试使用dojo的dnd构建应用程序的Dojo。我已经四处寻找这个问题的答案,但我不知道如何完成这一点。我有一个Source对象,其中有一些以特定方式用html/css格式化的产品。当我将这些对象拖动到我的目标对象时,被删除的项目仍然与以前一样。我想在丢弃后以不同的格式进行格式化。任何想法如何做到这一点?Dojo拖放:如何格式化放置的项目?

回答

2

您可以通过将creator函数ref传递给Source对象来完成此操作。

假设你有道场1.3,并且可以使用dojo.create.

在您的JS:

function myCreator(item, hint) { 
    var myDiv = dojo.create('div', { innerHTML: item.name }); 

    if (hint == 'avatar') { 
     // create your avatar if you want 
     myDiv.innerHTML = 'I'm an avator of ' + item.name; 
    } 
    return {node: myDiv, data: item, type: item.type}; 
} 
在你的HTML

然后(DIV或其他):

<div dojoType="dojo.dnd.Source" creator="myCreator"></div> 

如果你想创建编程的Source项目,只需传入创建者,如下所示:

var dnd = new dojo.dnd.Source(someNode, { creator: myCreator }); 

我在上面的例子中使用了item.name。这一切都取决于你的项目,所以你可能会想使用不同的领域。

创建dojo.dnd页面的优秀步骤是the SitePen blog

+0

感谢塞思 - 我为dnd Source使用了创建者函数,但并没有意识到您也可以将它用于Target。谢谢! – Calvin 2009-07-15 16:30:46

0
topic.subscribe("/dnd/drop", function(source, nodes, copy, target) { 

    target.forInSelectedItems(function(item, id) { 
     //alert(document.getElementById(id)); 
     if (document.getElementById(id).innerHTML == "something from your source") { 
      //create what you want, and add it to id 
     } 
    } 
}