Dojo 1.8 dnd修改dnd项的数据状态

Dojo 1.8 dnd修改dnd项的数据状态,dojo,drag-and-drop,Dojo,Drag And Drop,我有一个dnd.source和一个dnd.target。所以用户从源拖动一个项目并将其放到目标上。我使用自定义创建者是因为他们的观点不同。它的dnd项由如下数据对象支持 {alpha:“alphaVal”, 贝塔:“贝塔瓦”, 查理:“查利瓦尔”, 三角洲:“三角洲”} 源上的dnd项显示为列表,但当将其放到目标上时,自定义创建者会创建一个带有三个输入字段的div,以便用户可以更改alpha、beta和charlie的状态 然后,我使用dojoon,以便在任何字段上的值发生更改时更新项的数据状态

我有一个dnd.source和一个dnd.target。所以用户从源拖动一个项目并将其放到目标上。我使用自定义创建者是因为他们的观点不同。它的dnd项由如下数据对象支持

{alpha:“alphaVal”, 贝塔:“贝塔瓦”, 查理:“查利瓦尔”, 三角洲:“三角洲”}

源上的dnd项显示为列表,但当将其放到目标上时,自定义创建者会创建一个带有三个输入字段的div,以便用户可以更改alpha、beta和charlie的状态

然后,我使用dojoon,以便在任何字段上的值发生更改时更新项的数据状态。比如说,

function( item, hint ) {

var node = domConstruct.create( 'div' );

 var alphaVal = new TextBox( {
    name : 'filterBy',
    value : item.filterBy,
    placeHolder : 'type in a value',
  } );
  domConstruct.place( alphaVal.domNode, node );

 on( filterValue, 'change', function() {
    item.alphaVal = alphaVal.get( 'value' );
    targetDnd.setItem( itemId ,  item);
  } );

return {
  'node' : node,
  'data' : item,
  'type' : hint
};
};
如您所见,我正在更改支持该dnd项的数据状态。我的问题是,dnd源被设置为copyOnly,因此当项目拖到目标上时,仍然保留在源中。因此,当我更改目标中dnd项的基础数据状态时,它也会更改源上dnd项的数据状态。因此,同一物品的任何后续拖放都带有该状态。我怎样才能阻止这种事情发生

问候,,
G

到目前为止,我找到的唯一方法是使用dojo/\u base/lang克隆项目,然后修改并返回该项目

var clonedItem = lang.clone(item);

on( inputTextBox, 'change', function() {
  // update clonedItem
  // target.setItem(itemId, clonedItem);
});      
return {
"node" : node,
"data" : clonedItem,
"type" : hint
};
我想知道是否有办法将源设置为传递数据项的克隆,而不是项的引用