Мои импортированные данные 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, что значительно увеличило бы размер получаемого файла.
Я думаю, должны быть либо
- некоторые события, например, "onBeforeNodeRender" или "onBeforeNodeDraw", где я мог бы изменить данные узла перед его прорисовкой / рендерингом, или
- некоторая функция обратного вызова в опции, где моя логика может быть размещена для каждого узла в дереве.
- Третий сумасшедший вариант будет предусматривать механизм для обхода всех узлов дерева с доступом к узлу (данные узла.оригинальные и методы узла).
В настоящее время я полагаюсь на jQuery ".find" и модификации DOM, но он не может удовлетворить все мои потребности.
И, если заметить, если бы я мог изменить свойство "children" на "c" (одна буква) в моем файле JSON, а затем предоставить массив детей в коде JS из моего свойства "c", яd уменьшить размер моего файла данных примерно на 200K. Итак, может быть, какая-то оптимизация доступна?