2010-05-19 45 views

回答

0

通過調用getAllNodes(),您將按照它們顯示的順序收到節點列表。所以,如果你想保存在一個特定的順序列表,你可以做一些與此類似:

var data; 
var nodes = dndSrc.getAllNodes(); 
for(var i; i < nodes.length; i++) 
{ 
    data.push({id: nodes[i].id, order: i}); 
} 

有關道場的DnD有關數據提交的更多信息,請查看這篇文章,瞭解了免打擾和表單提交:http://www.chrisweldon.net/2009/05/09/dojo-drag-n-drop-and-form-submission

1

尤金這裏的答案是: Dojo Drag and drop: how to retrieve order of items?

這將是正確的方式。如果你看看上面的鏈接,你可以將生成的「orderedDataItems」對象保存爲JSON ...

看看下面的函數。它將我們的DND「燈箱」(dojo.dnd.source)保存爲JSON。

  • _it是當前原始DND項目
  • _it.data.item包含了所有你的東西,你需要保持
  • 在我們的例子_it.data.item.label保持定製節點(圖片,視頻,文檔)作爲一個字符串,我們可以在以後使用dojo.place它
  • 這是您要保存而不DOM節點的DND項目

如如果將項目從dijit樹中刪除爲任意dojo dnd源/目標: _RAM或_S在我們之前製作的data.item中需要被覆蓋。

LBtoJson: function(){ 
     var that = this; 
     var orderedLBitems = this.dndSource.getAllNodes().map(function(node){ 

      var _it = that.dndSource.getItem(node.id); 

      var it = { data:{ item:{} }, label:'', type:'' }; 
      if((_it.data.item._RAM)){_it.data.item._RAM={}} 
      if((_it.data.item._S)){_it.data.item._S={}} 

      it.data.item = dojo.clone(_it.data.item); 
      it.label = it.data.item.label[0]||it.data.item.label; 
      it.type = _it.type; 
      console.log(it); 
      return it; 
     }); 
     var LBjson = dojo.toJson(orderedLBitems); 
     return LBjson; 
    }