2011-06-13 72 views
1

嗨我试图实现一些拖放功能到一个项目,但我有几个方面有点困难。我遇到的一个问题是创建自定义头像,我能够实现自定义头像,但必须稍微作弊并用CSS隐藏一些元素。帮助Dojo拖放

下面是一个片断我的代码不是整个代码,我要求所有必要pacakges等

dojo.query(".canDrag").forEach(function(node, index, nodelist){ 
     var createSource = new dojo.dnd.Source(
      node, {copyOnly: true, creator: createAvatar} 
     ); 

    function createAvatar(item, hint) { 
     var node  = dojo.doc.createElement("span"); 
     dojo.addClass(node, "avatarStyle"); 

     if (hint == "avatar") { 
      var dHtml = item; 
      console.log("trying " + dHtml); 
      node.innerHTML = item; 
     } 
     else { 

      console.log("if this show remove redudant call"); 
     } 

     return {node: node, data: item, type: "product", copyOnly: true}; 
    }; 

好了,所以你可以看到我创建然后我的DnD源给它一个自定义的创造者我试图建立我自己的自定义头像。所述actyual可拖动标记低于:

<div class="canDrag panelLeft"> 
         <div class="dojoDndItem" dndType="product" title="digitalCamera" id="12345"> 
          <h3 class="productTitle"><a href="">Samsung ES71</a></h3> 
          <p class="productType">Compact Digital Camera</p> 
          <img src="img/small_Cam.png" class="imgLMargin" alt="Samsung ES71"/> 
          <div class="dragHandle"> 
          </div> 
         </div> 
        </div> 

而不是附加从canDrag整个DIV和向下我想抓住不同的元素,如图像和标题。产品,只是显示这些。如果任何人有任何想法,我还提前感谢你,如果我的问题还不够清楚,我可以尝试重述。

干杯

+0

你是什么意思的“而不是追加......”? – hugomg 2011-06-13 19:56:08

+0

我使用innerHTML将变量'item'附加到节点上,而不是在'item'中选择不同的元素并将其添加到头像中。 – jonnyhitek 2011-06-13 20:06:13

回答

2

CSS应该没问题。否则,您可以为项目使用dndData属性,也可以手动将项目添加到DnD源对象。

当使用dojoDndItem类时,Dojo希望化身的可视化已经在标记本身中解决。这就是为什么它传递内部HTML作为项目数据。这是最简单和常见的情况,当你不使用自定义创建者。我认为使用CSS来自定义头像是很好的。即使您没有使用自定义创建者来设置类,您也可以利用Dojo将自己的化身放入其自己的容器(标记为dojoDndAvatar(或dojoDndAvatarItem))的容器中。看看dojo/dnd/Avatar.js的来源。

如果你仍然想使用自定义的创造者,你有两个选择:

  • 添加dndData属性您的项目。在这种情况下,这就是item参数传递给创建者函数的原因。它可以是任何东西,你可以使用它来进一步自定义头像。例如。您可以序列化一个JSON对象,并从该对象动态创建头像,或者可以将其设置为唯一的ID,然后使用dojo.query()来访问它下面的节点。

  • 删除项目完全使用insertNodes()方法以编程方式添加它们。在这种情况下,您的创建者函数必须实现化身的案例和实际项目的案例。

它不解决您的问题特别,但这里是一个很好的Dojo DnD tutorial

Dojo reference guide也是有帮助的,一旦你明白发生了什么。当然,使用源卢克!

+0

嘿谢谢Gustavo你的建议一路帮助我,我最终创建了自定义头像!我使用了源哈哈;-)再次感谢。 – jonnyhitek 2011-07-18 10:58:33