2009-07-14 33 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 
     } 
    } 
}