我需要调用一个函数来更改dnd.source
先前创建的接受。任何关于如何改变存在的想法dojo.dnd.source
都会很棒。我用来创建的代码:
var catalog = new dojo.dnd.Source( 'div_catalog', { accept: ['inStock'] });
对不起我的英语,我还在学习。再次感谢。
我需要调用一个函数来更改dnd.source
先前创建的接受。任何关于如何改变存在的想法dojo.dnd.source
都会很棒。我用来创建的代码:
var catalog = new dojo.dnd.Source( 'div_catalog', { accept: ['inStock'] });
对不起我的英语,我还在学习。再次感谢。
我玩过这个,我发现“接受”属性似乎不是 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
我面临同样的问题,我找到了解决方案。其实很简单:
var source = new dojo.dnd.Source("divId", { accept: [] }); // 我们也可以使用 dojo.dnd.AutoSource
现在创建的源不会接受任何东西。要更改接受,我们必须向它的接受字段添加一个属性,如下所示:
source.accept["acceptType"] = 1;
同样删除它:
delete source.accept["acceptType"];
我希望它会帮助某人。
我找到了另一种解决问题的方法,但效果不是很好。我只是删除了div
包含的dnd.source
并创建了一个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