Если вывод drawContours содержит много сегментов (я имею в виду более двух, то есть правильный вывод), я бы попытался уменьшить эпсилон в ок. ]
Из замечательного блога Сакэ гуру ExtJS.
while (node.firstChild) {
node.removeChild(node.firstChild);
}
http://blog.extjs.eu/know-how/how-to-remove-all-children-of-a-tree-node/
В моем случае мое дерево Расширения имеет скрытый корневой узел типа AsyncTreeNode. Если я хочу очистить дерево и повторно заполнить с сервера, это довольно просто:
tree.getRootNode().reload();
if (tree) { var delNode; while (delNode = tree.root.childNodes[0]) tree.root.removeChild(delNode); }
Я не знаю Расширение, но я предполагаю, что у них есть абстракция DOM, которая могла бы сделать это легче. Эквивалент в Прототипе был бы чем-то как:
tree.root.immediateDescendants().invoke('remove'); // or
tree.root.select('> *').invoke('remove');
Если tree.root
относится к объекту коллекции, а не корневому узлу DOM дерева, но одалживает имена методов API DOM? Это кажется действительно маловероятным, специально для современной библиотеки JS.
Я наконец нашел ответ на их форумах. Поскольку любой заинтересовал его, здесь:
if (tree)
{
var delNode;
while (delNode = tree.root.childNodes[0])
tree.root.removeChild(delNode);
}
Я столкнулся с аналогичной проблемой, и решение, которое я придумал, заключалось в том, чтобы «пометить» узел, который не загружался, когда он был свернут, что вынуждает перезагрузить его при повторном расширении.
listeners: {
collapsenode: function(node){
node.loaded = false;
},