Как получить / установить принятие dojo.dnd.source
Мне нужно вызвать функцию, которая изменяет dnd.source
Принятие ранее созданного. Любая идея, как изменить существующее dojo.dnd.source
было бы здорово Код, который я использовал для создания:
var catalog = new dojo.dnd.Source( 'div_catalog', { accept: ['inStock'] });
извините за мой английский, я все еще учусь. Еще раз спасибо.
3 ответа
Я поэкспериментировал с этим и обнаружил, что свойство "accept" не является массивом, как предполагает руководство по додзё. Он отображается как некоторый объект (отличный от массива) в отладчике Chrome с атрибутом "текст", установленным в значение 1 по умолчанию. Доступ как element.accept = "";
отключить это работает, но после этого нет возврата к включению его снова, используя тот же метод и пытаясь что-то вроде element.accept = ['text'];
Я также попытался получить доступ к нему по element.accept.text
и это не сработало, как только объект был создан.
Для моего приложения мне нужно было разрешить одному элементу быть в каждом тд в таблице, и я использовал следующую функцию, чтобы сделать это и сохранить порядок элементов в таблице, используя вариант из перечисленных здесь. Я думал, что это стоит упомянуть.
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