Dojo DND создает несколько элементов

106
10

У меня вопрос, на который у меня нет ответа после нескольких часов попыток и googling :(

Я создал три компонента dojo.dnd.Source. Он используется для соединения пользователя с проектом, так что слева у меня есть проекты, а справа у меня есть мои пользователи, а в центре у меня есть холст. Я настроил соответствующих создателей и проверил функции, и все хорошо.

На центральном холсте пользователь может удалить проект, который отображается как div, содержащий всех связанных пользователей как элементы div. Другой тип dndtype, который можно отбросить, - это тип пользователя, в этом случае я хочу очистить холст и показать все проекты, к которым привязан пользователь. Как только я удаляю проект или пользователь на холсте, вызывается функция-создатель. Проблема заключается в том, что функция creator возвращает один элемент, который следует удалить, если я отбрасываю пользователя, мне нужно нарисовать несколько элементов на холсте, чтобы метод-создатель не полностью перекрывал это, так как он возвращает только один элемент.

Чтобы справиться с поведением по умолчанию, я попытался вручную добавить проекты на холст и вернуть только один, я знаю, что это не очень: S Он работает, но я столкнулся с странным поведением, если я перемещаю проект на холсте, это обрабатывается как пользователь вместо проекта.

Итог, есть способ, которым вы, ребята, знаете, чтобы удалить один элемент и создать несколько. Я искал, чтобы вызвать событие drop сам, но безрезультатно.

Благодарю!

спросил(а) 2021-01-19T15:31:08+03:00 2 месяца, 3 недели назад
1
Решение
97

Событие, которое вы ищете, это событие Source onDrop. Просмотрите документы API для некоторых других событий, которые вы можете использовать: для использования внутри и между магазинами есть onDropExternal и onDropInternal.

require(["dojo/dnd/Source"], function(Source){
var source = new Source({
onDrop = function(source, nodes, copy) {
//called only on the current target, when drop is performed
this.inherited(arguments); //execute the default onDrop function
//now add the node(s) to the other stores here
//you might be able to just do something like:
source2.insertNodes(nodes);//but this is untested ;)
}
});
});

ответил(а) 2021-01-19T15:31:08+03:00 2 месяца, 3 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема