2016-01-25 2 views
0

После создания и рендеринга TreeView для пользовательского интерфейса Kendo для заполнения DIV повторный вызов поочередно отображает только «загрузка ...» или работает правильно. Поскольку у меня есть, возможно, похожие проблемы с Kendo UI ContextMenu, я предполагаю, что между ними может быть какая-то необходимая очистка, которая пассивно выполняется даже вызовами, так что нечетные вызовы работают, но я не могу понять это (ссылка на пользовательский интерфейс Kendo docs я мог бы отсутствовать, поэтому я могу понять, почему я пропустил это, было бы полезно помочь с другими проблемами).Kendo UI Javascript redraw TreeView не рендеринга

В моем примере JSFiddle нажмите «нарисовать» снова и снова, и вы увидите альтернативное поведение. Образное нажатие «рисовать, уничтожать, рисовать, уничтожать ...», похоже, не помогает.

https://jsfiddle.net/rk3nfnnu/

<script> 
    function TreeDestroy() { // http://stackoverflow.com/questions/5431351 
     $('#Tree_Space').data('kendoTreeView').destroy(); 
     alert('destroyed'); 
    } 
    function TreeShow() { 
     $('#Tree_Space').kendoTreeView({ 
      dataSource: [ { Name: 'Top', items: [ { Name:'Item' } ] } ], 
      template: kendo.template($('#Tree_template').html()) 
     }); 
     alert('shown'); 
    } 
</script> 

<a href="#" onclick="TreeShow(); return false;">draw</a> | 
<a href="#" onclick="TreeDestroy(); return false;">destroy</a> 

<div id='Tree_Space'> 
</div> 

<script type='text/x-kendo-template' id='Tree_template'> 
    #= item.Name# 
</script> 
+0

Как обычно, после нескольких часов борьбы с этим возникла идея сразу после публикации. Я вставил $ ('# Tree_Space'). Empty() в мой «уничтожить», чтобы очистить DIV, а также уничтожить конфигурацию KendoUI. Я хотел бы изменить этот вопрос, чтобы спросить кого угодно, где в KendoUI docs я должен был найти эту информацию - как я должен был знать, кроме колоть в темноте, потому что у меня есть другие подобные проблемы с ContextMenu, и кто знает, что еще может произойти , –

+0

Некоторые элементы кендуи - это места после нижнего колонтитула в доме. Эти элементы останутся, если вы просто очистите оболочку div. Я предполагаю, что метод destroy() предназначен для очистки DropDownList и других артефактов, которые были сохранены вне элемента оболочки. –

+0

Я добавил базовый виджет уничтожить документацию, которую я нашел. Это не специфично для TreeView, однако древовидная структура расширяет базу. –

ответ

1

Я обновил эту скрипку. Уничтожить(); метод, возможно, уничтожает только выделенные элементы dom после визуализации виджета (узлы). Я сомневаюсь, что он очищает обертки и еще много чего. В своем TreeDestroy() вы получите сообщение об этом элементе div. Конечно, вы должны называть TreeDestroy до TreeCreate на всякий случай.

function TreeDestroy() { // http://stackoverflow.com/questions/5431351 
     $('#Tree_Space').data('kendoTreeView').destroy();  
     $('#Tree_Space').html(''); 
     alert('destroyed'); 
    } 

Here некоторая kendoui документация, которая относится к тому, как обрабатывать вручную удаления виджетов.

+0

Спасибо. Если вы знаете, пожалуйста, поделитесь тем, как это следует знать из документации, так как я не хочу, чтобы это требование требовалось для каждого виджета Kendoo UI, когда я его встречаю. –

+0

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

+0

еще раз спасибо за ссылку на Основы виджетов, которую я пропустил в руководстве. –

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