2010-01-19 38 views
0

我需要调用一个函数来改变之前创建的dnd.source接受。任何想法如何改变现有的dojo.dnd.source将是非常好的。代码我用来创建:如何获得/设置接受dojo.dnd.source

var catalog = new dojo.dnd.Source('div_catalog', { accept: ['inStock'] }); 

对不起,我的英语,我还在学习。再次感谢。

回答

0

我发现了另一种解决问题的方法,但效果并不好。我只是删除了包含dnd.sourcediv,并创建了一个具有不同接受度的新dnd.source。该代码我使用:

var element = dojo.byId(user_id);<br /> 
var element_father = element.parentNode;<br /> 
element_father.removeChild(element);<br /> 
var div = document.createElement("div");<br /> 
div.setAttribute('id',element.id);<br /> 
element_father.appendChild(div);<br />   
var catalog = new dojo.dnd.Source(element.id, {accept: ['outStock']}); 

我希望有人知道如何建立一个存在dnd.source

+0

你试过catalog.accept = ['otherValue']吗?我没有检查...只是猜测... – Philippe 2011-02-23 17:15:28

2

我跟这个身边打球,我发现了“接受”属性似乎不是一个阵列作为道场手册建议。它在chrome的调试器中显示为某种对象(除数组外),默认情况下该属性被称为“文本”,其值设置为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

我面临同样的问题,我找到了解决办法。事实上这很容易:

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

现在创建的源码不会接受任何东西。要更改接受我们必须添加一个属性到它的接受场这样的:

source.accept["acceptType"] = 1; 

而且同样将其删除:

delete source.accept["acceptType"]; 

我希望这会帮助别人。