Javascript-форум (https://javascript.ru/forum/)
-   ExtJS (https://javascript.ru/forum/extjs/)
-   -   Динамическая загрузка в дерево (https://javascript.ru/forum/extjs/42544-dinamicheskaya-zagruzka-v-derevo.html)

ka-5 31.10.2013 12:05

Динамическая загрузка в дерево
 
Здравствуйте!
Сильно не пинайте, я ещё только начинаю изучение ExtJs.

Хочу сделать динамическую загрузку дерева. В примерах вроде понятно, добавляем TreeStore, ему proxy с url-ем, а с сервера отдаём данные по запросам вида url?node=id
И тут у меня возникает ряд вопросов.

1. Данные беру из БД, данные в БД могут меняться. Хорошо, при изменении я через сокет как-нибудь сообщу клиенту об обновлении данных, и даже передам id конкретно тех записей, которые изменены. А может ли TreeStore перезагрузить и обновить на TreePanel только те узлы, о изменении которых я сообщаю? Или нужно всё дерево перезагружать?

2. Как настроить формат запроса вместо url?node=id чтобы был например url/node/id

Пока я не разобрался, как работать с TreeStore, пишу без него, обрабатываю события на узлах, подгружаю данные через сокет и обновляю узлы напрямую через NodeInterface. Но ведь это не правильно, идеологически неверно и просто мне не нравится.

ka-5 06.11.2013 10:56

Цитата:

Сообщение от ka-5 (Сообщение 278896)
1. Данные беру из БД, данные в БД могут меняться. Хорошо, при изменении я через сокет как-нибудь сообщу клиенту об обновлении данных, и даже передам id конкретно тех записей, которые изменены. А может ли TreeStore перезагрузить и обновить на TreePanel только те узлы, о изменении которых я сообщаю? Или нужно всё дерево перезагружать?

Сам нашёл ответ, всё дерево перезагружать не надо, достаточно только узел:

var store = treePanel.getStore();
var node = store.getNodeById( Id_of_serverside_changed_node );
if (node != null) {
    store.load({ node: node });
}

ka-5 21.11.2013 15:25

Обнаружилась ещё одна проблема.
При одновременном (асинхронном) вызове метода
store.load({ node: node });
из двух разных событий, в дерево от узла node загружаются сразу два экземпляра одного и того же поддерева. При чём это только в визуальном отображении, в самом store дерево остаётся корректным, однако лишний экземпляр поддерева в разметке оказывается "мёртвым" - не реагирует на события и не хочет удаляться.

hyp1k 10.02.2014 13:25

У меня были подобные проблемы, стал пользоваться dynatree. Документации много, пока что глюков не замечено.


Часовой пояс GMT +3, время: 02:31.