如何获取/设置对dojo.dnd.source的接受

时间:2010-01-19 19:47:35

标签: dojo-dnd

我需要调用一个更改先前创建的dnd.source接受的函数。任何想法如何改变现有的dojo.dnd.source都会很棒。我曾经创建的代码:

var catalog = new dojo.dnd.Source( 'div_catalog', { accept: ['inStock'] });
抱歉我的英语,我还在学习。再次感谢。

3 个答案:

答案 0 :(得分:2)

我玩过这个,我发现“接受”属性似乎不是dojo手册所暗示的数组。它在chrome的调试器中显示为某种对象(除了数组),默认情况下将名为“text”的属性设置为值1。访问element.accept = "";以禁用它可以正常工作,但之后无法再使用相同的方法重新启用它并尝试element.accept = ['text'];之类的内容我也尝试通过element.accept.text访问它一旦对象被实例化,它似乎没有工作。

对于我的应用程序,我需要在表中的每个td中允许单个项目,并且我使用以下函数执行此操作并使用此处列出的变体保留表中项目的顺序。我认为值得一提。

function changeAccept(source)
{
    var element = document.getElementById(source.node.id);
    console.log("element:"+element);
    var element_father = element.parentNode;
    var td = document.createElement("td");
    td.setAttribute('id',element.id);
    element_father.replaceChild(td,element);

    var newsource = new dojo.dnd.Source(element.id, {accept: ['text']});

    dojo.connect(newsource, "onDrop", function(source, nodes, copy) {
        console.log("Dropped",  newsource, source, nodes, copy);
        newsource.accept = "";
        changeAccept(source);
    });

    return newsource;
}

var priorelement = new dojo.dnd.Source(element.id, {accept: ''}); //disabled
changeAccept(priorelement); //enabled and in same position in table

答案 1 :(得分:1)

我遇到了同样的问题,我找到了解决方案。事实上这很容易:

  

var source = new dojo.dnd.Source(“divId”,{accept:[]}); // 我们可以   也使用dojo.dnd.AutoSource

现在创建的源代码不会接受任何内容。要更改接受度,我们必须在其 accept 字段中添加一个属性,如下所示:

source.accept["acceptType"] = 1;

同样删除它:

delete source.accept["acceptType"];

我希望它会帮助别人。

答案 2 :(得分:0)

我找到了解决问题的另一种方法,但它并不是那么好。我只是移除了包含div的{​​{1}},并创建了一个不同的新dnd.source。我使用的代码:

dnd.source

我希望有人知道如何设置现有的dnd.source