Я храню эту записку для людей из Додзё, таких же, как я, которые столкнулись бы с этой проблемой. Решения, приведенные здесь, не совсем хорошо работали в моей ситуации. Я использовал dijit.tree.dndSource с деревом Dojo, и подписка на «/ dnd / drop» позволяет мне захватить событие, даже если на тот момент мое хранилище данных не было обновлено последними изменениями. Поэтому я попытался ждать, как объясняет Венчни, но это не решает проблему полностью, поскольку я не могу рассчитывать на тайм-аут для выполнения работы ожидания. Время, необходимое для обновления магазина, может варьироваться, т. Е. Короче или очень долго, зависит от сложности вашей структуры данных. Я нашел решение с переопределением метода onDndDrop dndController. Просто вы можете указать onDndDrop: на вашем дереве инициализации. Одна вещь, которую я нашел странным, хотя вы не можете подключить этот метод, вы получите странное поведение во время dnd.
дерево
this._tree = new MapConfigTree({
checkAcceptance: this.dndAccept,
onDndDrop: this.onDndDrop,
betweenThreshold:5,
способ
onDndDrop : function(source, nodes, copy, target){
if(source.dropPosition === 'Over' && (target.targetAnchor.item.type[0] == 'Test layer')) {
this.inherited(arguments);
// do your bit here
} else {
this.onDndCancel();
}
}