我已经有了一个可以工作的DnD实现,但是我遇到了一个障碍。看起来如果我设置dojo.dnd.Source.checkAcceptance为true,那么我所做的Source容器将停止检查dndType,它会接受所有内容。
我在检查dojo.dnd中是否存在一个节点。Source容器,如果有,我想禁用删除。我这样做两次,因为如果页面加载时内容已经存在,我们想禁用删除额外的内容,只允许Source容器包含1个节点。
如果checkAcceptance = false,那么它工作并且不接受任何丢弃,但是如果checkAcceptance = true,那么它接受所有丢弃。
我使用的是dojo 1.4.2版。
下面是违规代码:
var contentSourceA = new dojo.dnd.Source("ContentCol",{accept: ["contentItem"]});
if (dojo.query("#ContentCol")[0].children.length > 1) {
contentSourceA.checkAcceptance = function(){return false;}
}else{
contentSourceA.checkAcceptance = function(){return true;}
}
dojo.connect(contentSourceA,'onDrop',function(source,node,copy){
if (dojo.query("#ContentCol")[0].children.length > 1) {
contentSourceA.checkAcceptance = function(){return false;}
}else{
contentSourceA.checkAcceptance = function(){return true;}
}
});
所以我的问题是:修改dojo.dnd.Source.checkAcceptance会影响类型检查功能吗?如果没有,我做错了什么?我应该通过一个主题事件来做吗?
1条答案
按热度按时间ffvjumwh1#
类型检查逻辑封装在
dojo.dnd.Source.checkAcceptance
函数的默认实现中。如果重写此函数,默认逻辑将丢失。您可以通过继承
dojo.dnd.Source
创建自己的DnD源类: