Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将dojo.dnd.Source.checkAcceptance更改为true是否会影响类型检查?_Dojo - Fatal编程技术网

将dojo.dnd.Source.checkAcceptance更改为true是否会影响类型检查?

将dojo.dnd.Source.checkAcceptance更改为true是否会影响类型检查?,dojo,Dojo,我有一个工作的DnD实现,但我遇到了一个障碍。似乎如果我将dojo.dnd.Source.checkacception设置为true,那么我这样做的源容器将停止检查dndType,它将接受所有内容 我正在检查dojo.dnd.Source容器中是否存在节点,如果存在,我想禁用删除。我这样做了两次,因为如果页面加载时内容已经存在,我们希望禁用在那里删除其他内容,并且只允许源容器包含1个节点。onDrop事件也是如此 如果checkAcceptance=false,那么它工作并且不接受任何删除,但是

我有一个工作的DnD实现,但我遇到了一个障碍。似乎如果我将dojo.dnd.Source.checkacception设置为true,那么我这样做的源容器将停止检查dndType,它将接受所有内容

我正在检查dojo.dnd.Source容器中是否存在节点,如果存在,我想禁用删除。我这样做了两次,因为如果页面加载时内容已经存在,我们希望禁用在那里删除其他内容,并且只允许源容器包含1个节点。onDrop事件也是如此

如果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是否会影响类型检查功能?如果没有,我做错了什么?是否应该通过主题事件之一执行此操作?

类型检查逻辑封装在
dojo.dnd.Source.checkAcceptance
函数的默认实现中。如果覆盖此功能,默认逻辑将丢失

通过继承
dojo.DnD.source
,您可以创建自己的DnD源类:

dojo.declare("AcceptOneItemSource", dojo.dnd.Source, {
    checkAcceptance : function(source, nodes) {
       if (this.node.children.length > 1) {
           return false;
       }
       return this.inherited(arguments);
    }
});