Есть ли в приложении Foundry Slate простой способ написания функций, которые принимают аргументы в качестве входных данных, используя синтаксис руля?
Можете ли вы передавать аргументы функциям в Slate?
Ответы (1)
Вместо аргументов функции входные данные для функции Slate определяются ссылкой Handlebar внутри самой функции; например, чтобы получить доступ к данным из запроса внутри функции, вы можете написать:
const data = {{q_myQuery}}
Такое определение зависимостей позволяет Slate автоматически пересчитывать выходные данные функции всякий раз, когда изменяются значения вышестоящих зависимостей. Таким образом, вы никогда не вызываете функцию, а скорее какой-то другой элемент в Slate ссылается на вывод функции, и этот вывод обновляется при каждом изменении входных данных.
Если вы хотите повторно использовать какой-либо код, вы можете использовать библиотеки функций для написания общего кода, который вы можете повторно использовать между функциями. Это стандартные функции javascript, которые включены в глобальную область javascript, и на них можно ссылаться просто по имени функции из любой функции, и они принимают параметры функции, используя обычный синтаксис javascript. Поскольку это ванильный javascript, вы не можете использовать Handlebars внутри библиотеки функций - здесь любой ввод должен быть передан в качестве параметра из родительской функции.
Из документации (Slate › Concepts › Functions):
Библиотеки функций на уровне документа
Пользователи могут писать многоразовые функции javascript с параметрами. Это поможет в рефакторинге кода и уменьшит количество операций копирования и вставки кода в функциях. Вы также можете повторно запустить и обновить все функции, зависящие от библиотеки функций, с помощью кнопки Re-run All Function.
Доступны библиотеки JavaScript по умолчанию
Для расширенного использования функций Slate по умолчанию поставляется (начиная с Slate 2.15) со следующими внешними библиотеками JavaScript: Lodash, Math.js, Moment, Numeral и es6-shim. Не стесняйтесь использовать эти библиотеки при написании своих функций. Не используйте возможности синтаксиса ES6, если только всем пользователям не предписано использовать браузер, поддерживающий эти функции.