extjs 4 удаляет узел из древовидной панели, давая ошибку в пользовательском перетаскивании

Я настраиваю пользовательскую реализацию перетаскивания с древовидными панелями, где я хочу, чтобы все узлы прикреплялись к узлу, который я создал под корнем. Я пытаюсь перетащить один узел из одной панели дерева в другую определенным образом. Я могу переместить предмет, но у меня возникают проблемы при удалении его с другой стороны.

Вот мой код, это внутри моей панели дерева:

viewConfig:{
 plugins:{
  ptype:'treeviewdragdrop',
  DDgroup:'treeDD'
 },

 listeners:{
    beforedrop: function(node, data, dropRec, dropPosition){
      if(dropRec.parentNode.data.text == "Root"){
        console.log('dropping on top level');
        this.up('panel').getStore().getRootNode().getChildAt(0).insertChild(0, data.records[0].data);
        //the below line seems to be causing the error, how should I be removing?
        choicesTree.getRootNode().getChildAt(0).removeChild(data.records[0]);
        //choicesTree is previously defined
        return false;
      }
}

Это удаляет элемент из первой панели дерева, но сразу же выдает следующую ошибку:

item is null
fly(item.firstChild).highlight(me.repairHighlightColor, {

1 ответ

Решение

Возврат false вызывает проблему в коде. return 0 также не работает, как описано в документации. Код не работает из-за ошибок в версии 4.07 extjs, код работает как положено в версии 4.1

Из документации: Возврат false для этого события означает, что жест перетаскивания был недействительным, и если прокси-сервер перетаскивания вернется к точке, с которой началось перетаскивание. Возврат 0 к этому событию сигнализирует о том, что операция передачи данных не должна выполняться, но что жест действителен и что операция восстановления не должна выполняться. Любое другое возвращаемое значение продолжается с операцией передачи данных.

Вышеупомянутое поведение из документов отличается от того, что происходит

Другие вопросы по тегам