Extjs tree управление загрузкой.

extjs tree

Как бы это не звучало странным, но класс tree  в принципе никак не может управлять загрузкой дерева. Он показывает все, что загрузил treeLoader.  Так все просто! скажете вы. TreeLoader и управляет загрузкой дерева. А вот и нет.  TreeLoader просто загружает в tree те данные, что выплюнул сервер. Управлением загрузкой данных в extjs treepanel занимается сервер. Это немного неочевидно,  за то очень удобно.  TreeLoader загружает все, что отдал сервер, будь то полное дерево, или только один из его уровней, а treePanel умеет при необходимости ( при отсутствии в дереве соответствующей ветки) попросить TreeLoader забрать с сервера необходимый кусок данных. Причем сервер может вернуть не только запрашиваемый уровень но и  произвольное количество вложенности.

Это очень удобно. Обычно дерево на сервере собирается из базы данных при помощи какой-либо рекурсивной функции.  достаточно в этой функции просто вести подсчет числа элементов в дереве, и по превышении заранее рассчитанной величины прекращать  сбор данных.  Таким путем мы можем найти баланс между скоростью и удобством. Отдавать все дерево целиком в treePanel не всегда возможно.  Деревья бывают большими. А отдавать по одному уровню за запрос не сильно удобно с точки зрения пользователя, когда на каждый клик мыши будет обращение к серверу за новой порцией данных. А вот разбив отдачу дерева скажем по 50-100 узлов за раз мы найдем необходимый компромисс.

Comments

Leave a Reply




FireStats icon Powered by FireStats