2009-07-14 3 views
2

Dojo를 사용하여 dojo의 dnd로 애플리케이션을 빌드하려고합니다. 나는이 문제에 대한 해답을 찾아 보았지만 이것을 성취하는 방법을 모르겠습니다. 나는 특정 방법으로 html/css로 포맷 된 많은 제품들이있는 Source 객체를 가지고있다. 이러한 개체를 대상 개체로 끌면 삭제 된 항목은 이전과 동일하게 보입니다. 내가 떨어 뜨린 후 다르게 포맷하고 싶다. 어떤 아이디어가 이것을 어떻게?Dojo 끌어서 놓기 : 놓은 항목의 서식을 지정하는 방법은 무엇입니까?

답변

2

creator 함수 참조를 소스 객체에 전달하면됩니다. 당신이 만들려면

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

: 당신의 HTML에서 그런

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 또는 무엇이든) :

는 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에 대해 작성자 기능을 사용하고 있었지만 대상에도 사용할 수 있다는 것을 알지 못했습니다. 감사! – 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 
     } 
    } 
} 
관련 문제