我有一个dnd.source和一个dnd.target。因此,用户从源中拖动项目并将其放在目标上。我使用自定义创建者,因为他们的观点不同。它的dnd项由像这样的数据对象支持
{阿尔法: “alphaVal”, 测试: “betaVal定义”, 查理:“charlieVal” 增量: “deltaVal”}
源上的dnd项目显示为列表,但当放到目标上时,自定义创建者会创建一个包含三个输入字段的div,以便用户可以更改alpha,beta,charlie的状态。
然后我使用dojo,以便在任何字段上更改值时更新项目的数据状态。例如,
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项的数据状态。因此,同一项目的任何后续拖拽'n'都会带有该状态。我怎样才能阻止这种情况发生?
此致 ģ
答案 0 :(得分:0)
到目前为止,我找到的唯一方法是使用dojo / _base / lang来克隆项目,然后修改并返回该项目。
var clonedItem = lang.clone(item);
on( inputTextBox, 'change', function() {
// update clonedItem
// target.setItem(itemId, clonedItem);
});
return {
"node" : node,
"data" : clonedItem,
"type" : hint
};
我想知道是否有办法设置源来传递数据项的克隆而不是项目的引用。