logologo
Початок
Посібник
Розробка
Плагіни
API
English
简体中文
日本語
한국어
Deutsch
Français
Español
Português
Русский
Italiano
Türkçe
Українська
Tiếng Việt
Bahasa Indonesia
ไทย
Polski
Nederlands
Čeština
العربية
עברית
हिन्दी
Svenska
Початок
Посібник
Розробка
Плагіни
API
logologo
Огляд

Блоки

Огляд

Блоки даних

Таблиця
Форма
Деталі
Список
Картки-сітка
Діаграма

Блок фільтрів

Форма

Інші блоки

Панель керування
Iframe
Блок посилання
Markdown
JS Block

Налаштування блоку

Діапазон даних
Макет
Правила зв'язування блоків
Правила зв'язування полів
Правила сортування
Видалення блоку
Заголовок блоку

Поле

Огляд

Загальні налаштування

Поля таблиці
Поля деталей
Поля форми фільтрації
Поля форми

Специфічні налаштування

Дата
Файловий менеджер
Підформа
Випадаючий список
Селектор даних
Каскадний селектор
Підтаблиця
Піддеталі
Заголовок
JS Field
JS Item
JS Column

Налаштування поля

Значення за замовчуванням
Мітка поля
Показувати мітку
Підказка для поля
Діапазон даних
Компонент поля
Форматування чисел
Режим
Обов'язкове
Поле заголовка
Правила валідації
Компонент поля зв'язку

Дія

Огляд

Налаштування дії

Кнопка редагування
Повторне підтвердження
Призначення поля
Прив'язка робочого процесу
Спливаюче вікно редагування
Правила зв'язування дій

Тип дії

Додати
Перегляд
Видалити
Редагувати
Імпорт
Імпорт Pro
Експорт
Експорт Pro
Експорт вкладень
Фільтр
Посилання
Відкрити спливаюче вікно
Оновити
Надіслати дані
Запустити робочий процес
Оновити запис
Масове оновлення
Додати підзапис
JS Action
Дозволи на дії

Поглиблено

Правила зв'язування
Потік подій
Змінна
RunJS
Previous PageДодати підзапис
Next PageДозволи на дії
Повідомлення про переклад ШІ

Ця документація була автоматично перекладена штучним інтелектом.

#JS Дія

#Вступ

JS Дія використовується для виконання JavaScript при натисканні кнопки, дозволяючи налаштовувати будь-яку бізнес-логіку. Її можна використовувати в панелях інструментів форм, панелях інструментів таблиць (на рівні колекції), рядках таблиць (на рівні запису) та інших місцях для виконання таких операцій, як валідація, відображення сповіщень, виклики API, відкриття спливаючих вікон/бічних панелей та оновлення даних.

jsaction-add-20251029

#API контексту виконання (часто використовувані)

  • ctx.api.request(options): Здійснює HTTP-запит;

  • ctx.openView(viewUid, options): Відкриває налаштований вигляд (бічну панель/діалогове вікно/сторінку);

  • ctx.message / ctx.notification: Глобальні повідомлення та сповіщення;

  • ctx.t() / ctx.i18n.t(): Інтернаціоналізація;

  • ctx.resource: Ресурс даних для контексту рівня колекції (наприклад, панель інструментів таблиці), що включає такі методи, як getSelectedRows() та refresh();

  • ctx.record: Поточний запис рядка для контексту рівня запису (наприклад, кнопка рядка таблиці);

  • ctx.form: Екземпляр форми AntD для контексту рівня форми (наприклад, кнопка панелі інструментів форми);

  • ctx.collection: Метаінформація поточної колекції;

  • Редактор коду підтримує фрагменти Snippets та попереднє виконання Run (див. нижче).

  • ctx.requireAsync(url): Асинхронно завантажує бібліотеку AMD/UMD за URL-адресою;

  • ctx.importAsync(url): Динамічно імпортує модуль ESM за URL-адресою;

Фактично доступні змінні можуть відрізнятися залежно від розташування кнопки. Наведений вище список є оглядом загальних можливостей.

#Редактор та фрагменти

  • Snippets: Відкриває список вбудованих фрагментів коду, які можна шукати та вставляти в поточну позицію курсору одним кліком.
  • Run: Безпосередньо виконує поточний код та виводить журнали виконання на панель Logs внизу. Підтримує console.log/info/warn/error та підсвічування помилок для легкого визначення їх місцезнаходження.

jsaction-toolbars-20251029

  • Ви можете використовувати AI-співробітників для генерації/модифікації скриптів: AI-співробітник · Натан: Frontend-інженер

#Поширені випадки використання (спрощені приклади)

#1) Запит API та сповіщення

const resp = await ctx.api.request({ url: 'users:list', method: 'get', params: { pageSize: 10 } });
ctx.message.success(ctx.t('Request finished'));
console.log(ctx.t('Response data:'), resp?.data);

#2) Кнопка колекції: Валідація вибору та обробка

const rows = ctx.resource?.getSelectedRows?.() || [];
if (!rows.length) {
  ctx.message.warning(ctx.t('Please select records'));
  return;
}
// TODO: Implement business logic...
ctx.message.success(ctx.t('Selected {n} items', { n: rows.length }));

#3) Кнопка запису: Зчитування поточного запису рядка

if (!ctx.record) {
  ctx.message.error(ctx.t('No record'));
} else {
  ctx.message.success(ctx.t('Record ID: {id}', { id: ctx.record.id }))
}

#4) Відкриття вигляду (бічної панелі/діалогового вікна)

const popupUid = ctx.model.uid + '-open'; // Bind to the current button for stability
await ctx.openView(popupUid, { mode: 'drawer', title: ctx.t('Details'), size: 'large' });

#5) Оновлення даних після відправлення

// Загальне оновлення: пріоритет надається ресурсам таблиці/списку, потім ресурсу блоку, що містить форму.
if (ctx.resource?.refresh) await ctx.resource.refresh();
else if (ctx.blockModel?.resource?.refresh) await ctx.blockModel.resource.refresh();

#Важливі зауваження

  • Ідемпотентність дій: Щоб запобігти багаторазовим відправленням через повторні натискання, ви можете додати перемикач стану або вимкнути кнопку в логіці.
  • Обробка помилок: Додайте блоки try/catch для викликів API та надайте користувачеві відповідні сповіщення.
  • Взаємодія з виглядами: При відкритті спливаючого вікна/бічної панелі за допомогою ctx.openView рекомендується явно передавати параметри і, за необхідності, активно оновлювати батьківський ресурс після успішного відправлення.

#Пов'язані документи

  • Змінні та контекст
  • Правила взаємодії
  • Вигляди та спливаючі вікна