2015-06-01 2 views
0

В моем приложении у меня есть два экземпляра fancytree бок о бок с различным содержимым. tree1 не может быть изменен каким-либо образом и служит только для копирования его узлов в tree2 с помощью перетаскивания & drop (расширение dnd).Fancytree: вручную восстановить ключ, чтобы избежать дубликатов

В dragDrop: случае tree2 у меня есть что-то похожее на:

if(data.otherNode.tree === node.tree){ 
    data.otherNode.moveTo(node, data.hitMode); 
} 
else{ 
    data.otherNode.copyTo(node, data.hitMode); 
} 

Вопрос заключается в том, что, когда я использую copyTo() ключ узла также копируется, и если я копирую тот же узел несколько раз в течение tree2 I неизбежно заканчиваются дублирующимися ключами. Я знаю, что fancytree может автоматически назначать недвойственные ключи (например, если исходный json для вашего дерева не имеет ключевого значения), но я не знаю, как это сделать в этой ситуации.

ответ

2

copyTo() имеет функцию обратного вызова, которая позволяет вам изменять новый узел. Попробуйте следующее:

if(data.otherNode.tree === node.tree){ 
    data.otherNode.moveTo(node, data.hitMode); 
} 
else{ 
    data.otherNode.copyTo(node, data.hitMode, function(n){ 
     // Set your new key here! 
     n.key = <NEW_KEY>; 
    }) 
} 
+0

Или «удалить n.key», который будет восстанавливать ключ. – mar10

+0

Установка 'n.key = null;' будет генерировать новый ключ. –

Смежные вопросы