2009-07-14 22 views
2

Dojoを使用して、dojoのdndでアプリケーションを構築しようとしています。私はこの問題に対する答えを見回しましたが、これをどうやって達成するのか分かりません。私はある種の方法でhtml/cssでフォーマットされたたくさんの製品があるSourceオブジェクトを持っています。これらのオブジェクトをターゲットオブジェクトにドラッグすると、ドロップされたアイテムは以前と同じように見えます。私はそれを落とした後に違ったフォーマットをしたい。どのようにこれを行うにはどのようなアイデア?Dojoドラッグアンドドロップ:ドロップされたアイテムをフォーマットする方法は?

答えて

2

これは、creatorファンクションリファレンスをソースオブジェクトに渡すことで行います。あなたのHTML(DIVまたは何でも)に続いて

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}; 
} 

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

作成したい場合は、道場1.3を持っているし、あなたのJSでdojo.create.

を使用することができると仮定すると、

プログラムによってSourceアイテムを作成してください。

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

上記の例ではitem.nameを使用しました。これはあなたのアイテムに依存しますが、おそらく別のフィールドを使用することになります。

dojo.dndページを作成する際の優れた手順は、the SitePen blogです。

+0

ありがとうSeth - 私はdnd Sourceの作成機能を使用していましたが、あなたもそれをTargetでも使用できるとは思いませんでした。ありがとう! – Calvin

+0

ああ...ええ。道場はそんなに卑劣です。 TargetはSourceのサブクラスです。 – seth

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 
     } 
    } 
} 
関連する問題