Привязка данных в неправильное время в Jstree - PullRequest
0 голосов
/ 10 апреля 2019

Используя jstree v3 у меня есть

this.elements.$tree.jstree({
            core: {
                data: function (node, successCallback) {
                    // Handle node expansion
                    thisTmp._expandNode(node, successCallback);
                },
...

Это нормально работает, когда я впервые открываю узел и перехожу на свой сервер, чтобы получить дочерние узлы. Если я затем закрою узел, он также будет вызван, и я бы не хотел беспокоить сервер в этот момент. Кроме того, если я снова открою узел, эта функция вообще не вызывается.

Расследование Я заметил, что пройденный узел всегда имеет состояние loading: true со всеми остальными, установленными в ложь.

Дальнейшие исследования показывают, что эта функция вызывается до события before_open.jstree и после события after_close.jstree. Это, вероятно, объясняет состояние узла, но мне не помогает.

Мне нужно, чтобы он вызывал веб-сервер каждый раз, когда я открываю узел, потому что элементы, представленные дочерними узлами, могли измениться с момента последнего просмотра. То есть может быть больше / разных / меньше узлов.

Потратил все утро на это и не вижу, что я делаю неправильно (или должен поступить иначе). Есть идеи?

Спасибо

1 Ответ

0 голосов
/ 12 апреля 2019

ОК, я нашел решение ...

В событии after_close я установил загруженное состояние узла в false. Это заставляет jstree снова запускать загрузку, когда я в следующий раз открываю узел и получаю все обновленные элементы дерева.

...