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

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