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ブロック

ブロック設定

データ範囲
レイアウト
ブロック連携ルール
フィールド連携ルール
並び替えルール
ブロック削除
ブロックタイトル

フィールド

概要

共通設定

テーブルフィールド
詳細フィールド
フィルターフォームフィールド
フォームフィールド

固有設定

日付
ファイルマネージャー
サブフォーム
ドロップダウン
データセレクター
カスケードセレクター
サブテーブル
サブ詳細
タイトル
JSフィールド
JSアイテム
JSカラム

フィールド設定

デフォルト値
フィールドラベル
ラベル表示
フィールドヒント
データ範囲
フィールドコンポーネント
数値フォーマット
モード
必須
タイトルフィールド
バリデーションルール
関連フィールドコンポーネント

アクション

概要

アクション設定

編集ボタン
再確認
フィールド割り当て
ワークフロー連携
編集ダイアログ
アクション連携ルール

アクションタイプ

新規作成
表示
削除
編集
インポート
インポートPro
エクスポート
エクスポートPro
添付ファイルのエクスポート
フィルター
リンク
ポップアップを開く
リフレッシュ
データ送信
ワークフロー実行
レコード更新
一括更新
サブレコード追加
JSアクション
アクション権限

高度な設定

連携ルール
イベントフロー
変数
RunJS
Previous Pageサブレコード追加
Next Pageアクション権限
TIP

このドキュメントはAIによって翻訳されました。不正確な情報については、英語版をご参照ください

#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 Formインスタンス(例:フォームのツールバーボタン)。

  • ctx.collection: 現在のコレクションのメタ情報。

  • コードエディターはSnippets(スニペット)とRun(プレ実行)をサポートしています(下記参照)。

  • ctx.requireAsync(url): URLを指定してAMD/UMDライブラリを非同期でロードします。

  • ctx.importAsync(url): URLを指定してESMモジュールを動的にインポートします。

実際に利用可能な変数は、ボタンの配置場所によって異なります。上記は一般的な機能の概要です。

#エディターとスニペット

  • Snippets: 組み込みのコードスニペットリストを開き、検索して、現在のカーソル位置にワンクリックで挿入できます。
  • Run: 現在のコードを直接実行し、実行ログを下部のLogsパネルに出力します。console.log/info/warn/errorをサポートし、エラーのハイライト表示と位置特定が可能です。

jsaction-toolbars-20251029

  • AI従業員と連携してスクリプトを生成・修正できます:AI従業員・Nathan:フロントエンドエンジニア

#一般的な使い方(簡略化された例)

#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: ビジネスロジックを実行…
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'; // 現在のボタンにバインドし、安定性を保ちます
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();

#注意事項

  • アクションの冪等性: 繰り返しクリックによる複数回の送信を防ぐため、ロジックに状態フラグを追加するか、ボタンを無効にすることができます。
  • エラー処理: API呼び出しにはtry/catchブロックを追加し、ユーザーに分かりやすいフィードバックを提供してください。
  • ビュー連携: ctx.openViewでポップアップ/ドロワーを開く際は、明示的にパラメータを渡すことをお勧めします。必要に応じて、送信成功後に親リソースを積極的に更新してください。

#関連ドキュメント

  • 変数とコンテキスト
  • 連携ルール
  • ビューとポップアップ