在 dojo.dnd 中禁用复制
Posted
技术标签:
【中文标题】在 dojo.dnd 中禁用复制【英文标题】:Disabling copying in dojo.dnd 【发布时间】:2011-01-04 16:07:56 【问题描述】:默认情况下,dojo.dnd.Source 容器允许您按住 Ctrl 来复制/复制拖动的项目,而不仅仅是移动它。
我知道您可以设置singular=true 来停止拖动多个项目,但我如何停止复制?在我的项目的上下文中复制项目没有任何意义(我正在制作一个可拖动的列表以重新排序网站菜单上的页面)。
谢谢
【问题讨论】:
【参考方案1】:我不确定是否有更好的方法,但我总是通过破坏 Source 实例上的 copyState
方法以始终返回 false
来实现这一点。
如果您在页面上有多个来源,您还可以选择 dojo.declare
覆盖该方法的子类,或选择 dojo.extend
dojo.dnd.Source
本身以在所有情况下破坏该方法。
【讨论】:
顺便说一句,这是官方认可的方法。 ;-)【参考方案2】:或第二个选项
dojo.addOnLoad(function()
//Disable the key events Ctrl and Shift
dojo.extend( dojo.dnd.Source, copyState: function( keyPressed, self )
return false;
);
//Create the dnd source object for data point column bar
columnBar = new dojo.dnd.Source("viewColumnBar", singular: true );
);
【讨论】:
【参考方案3】:感谢 Ken Franquiero,我设法解决了这个问题。对于同一条船上的其他人,这是我的代码:
/**
* Extend dojo.dnd.Source to prevent copying
*/
dojo.require( 'dojo.dnd.Source' );
dojo.addOnLoad( function()
dojo.declare
(
'EditPosition',
dojo.dnd.Source,
copyState: function( keyPressed, self )
return false;
);
oEditPosition = new EditPosition
(
'position_container',
withHandles: 'true'
);
);
html:
<div id="position_container">
<div class="dojoDndItem">
<div class="dojoDndHandle drag_icon drag_handle"></div> <strong>Short Paragraphs</strong>
</div>
<div class="dojoDndItem">
<div class="drag_icon fixed_handle"></div> About Us
</div>
<div class="dojoDndItem">
<div class="drag_icon fixed_handle"></div> Team Members
</div>
</div>
【讨论】:
以上是关于在 dojo.dnd 中禁用复制的主要内容,如果未能解决你的问题,请参考以下文章