Dojo 1.8 dnd修改dnd项的数据状态
我有一个dnd.source和一个dnd.target。所以用户从源拖动一个项目并将其放到目标上。我使用自定义创建者是因为他们的观点不同。它的dnd项由如下数据对象支持 {alpha:“alphaVal”, 贝塔:“贝塔瓦”, 查理:“查利瓦尔”, 三角洲:“三角洲”} 源上的dnd项显示为列表,但当将其放到目标上时,自定义创建者会创建一个带有三个输入字段的div,以便用户可以更改alpha、beta和charlie的状态 然后,我使用dojoon,以便在任何字段上的值发生更改时更新项的数据状态。比如说,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,以便在任何字段上的值发生更改时更新项的数据状态
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
};
我想知道是否有办法将源设置为传递数据项的克隆,而不是项的引用