Существует ли обратный вызов, например, «onBeforeRender» или «onBeforeDraw» для изменения параметров узла jsTree, таких как «тип» или «значок», на основе исходных данных узла? - PullRequest
0 голосов
/ 14 октября 2019

Мои импортированные данные JSON - это довольно большой файл, и я бы не хотел обременять их определениями «значок» и «тип», которые можно рассчитать на внешнем интерфейсе.

Я имею в виду, что если у узла нет дочерних элементов, я бы хотел, чтобы он имел тип: «лист» и имел соответствующий значок этого типа. Я также поместил «info»: «no_related_terms» в некоторые узлы исходного массива данных JSON, и я бы хотел, чтобы «type» для таких узлов был «not_checkable_leaf», если у него нет дочерних элементов и «no_related_terms», или просто «leaf»msgstr "если он не имеет дочерних элементов и не имеет" no_related_terms ", установленного на исходных данных узла.

Итак, я бы хотел иметь 4 типа узлов:

  • "default": у которого есть дочерние элементы, нет информации: "no_related_terms"
  • "not_checkable_folder": имеет детей, но имеет информацию: "no_related_terms"
  • "leaf" - не имеет детей, не имеет "info": "no_related_terms"
  • "not_checkable_leaf": - не имеет дочерних элементов, имеет "info": "no_related_terms"

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

Я думаю, должны быть либо

  1. некоторые события, например, "onBeforeNodeRender" или "onBeforeNodeDraw", где я мог бы изменить данные узла перед его прорисовкой / рендерингом, или
  2. некоторая функция обратного вызова в опции, где моя логика может быть размещена для каждого узла в дереве.
  3. Третий сумасшедший вариант будет предусматривать механизм для обхода всех узлов дерева с доступом к узлу (данные узла.оригинальные и методы узла).

В настоящее время я полагаюсь на jQuery ".find" и модификации DOM, но он не может удовлетворить все мои потребности.

И, если заметить, если бы я мог изменить свойство "children" на "c" (одна буква) в моем файле JSON, а затем предоставить массив детей в коде JS из моего свойства "c", яd уменьшить размер моего файла данных примерно на 200K. Итак, может быть, какая-то оптимизация доступна?

...