logologo
スタート
マニュアル
開発
プラグイン
API
ホーム
English
简体中文
日本語
한국어
Español
Português
Deutsch
Français
Русский
スタート
マニュアル
開発
プラグイン
API
ホーム
logologo
RunJS 概要
モジュールのインポート
コンテナ内でのレンダリング

グローバル変数

window
document
navigator

ctx

ctx.blockModel
ctx.collection
ctx.collectionField
ctx.dataSource
ctx.dataSourceManager
ctx.element
ctx.exit()
ctx.exitAll()
ctx.filterManager
ctx.form
ctx.getModel()
ctx.getValue()
ctx.getVar()
ctx.i18n
ctx.importAsync()
ctx.initResource()
ctx.libs
ctx.location
ctx.logger
ctx.makeResource()
ctx.message
ctx.modal
ctx.model
ctx.notification
ctx.off()
ctx.on()
ctx.openView()
ctx.render()
ctx.request()
ctx.requireAsync()
ctx.resource
ctx.route
ctx.router
ctx.setValue()
ctx.sql
ctx.t()
ctx.view
Previous Pagectx.getValue()
Next Pagectx.i18n
AI翻訳通知

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

#ctx.getVar()

現在の実行コンテキストから変数の値を非同期で読み取ります。変数のソースは SQL やテンプレート内の {{ctx.xxx}} の解析ルールと一致しており、通常は現在のユーザー、現在のレコード、ビューのパラメータ、ポップアップのコンテキストなどから取得されます。

#適用シーン

シーン説明
JSブロック / JSフィールド現在のレコード、ユーザー、リソースなどの情報を取得し、レンダリングやロジックの判定に使用します。
連携ルール / イベントフローctx.record や ctx.formValues などを読み取り、条件判断を行います。
数式 / テンプレート{{ctx.xxx}} と同じ変数解析ルールを使用します。

#型定義

getVar(path: string): Promise<any>;
パラメータ型説明
pathstring変数のパス。必ず ctx. で始まる必要があります。ドット記法や配列のインデックス指定をサポートしています。

戻り値: Promise<any>。解析後の値を取得するには await を使用する必要があります。変数が存在しない場合は undefined を返します。

ctx. で始まらないパスを渡すと、エラーがスローされます:ctx.getVar(path) expects an expression starting with "ctx.", got: "..."。

#よく使われる変数のパス

パス説明
ctx.record現在のレコード(フォームや詳細ブロックがレコードに紐付いている場合に使用可能)
ctx.record.id現在のレコードの主キー
ctx.formValues現在のフォームの値(連携ルールやイベントフローでよく使われます。フォームのコンテキストでは、リアルタイムな読み取りのために ctx.form.getFieldsValue() を優先して使用してください)
ctx.user現在のログインユーザー
ctx.user.id現在のユーザー ID
ctx.user.nickname現在のユーザーのニックネーム
ctx.user.roles.name現在のユーザーのロール名(配列)
ctx.popup.recordポップアップ内のレコード
ctx.popup.record.idポップアップ内のレコードの主キー
ctx.urlSearchParamsURL クエリパラメータ(?key=value から解析されたもの)
ctx.token現在の API トークン
ctx.role現在のロール

#ctx.getVarInfos()

現在のコンテキストで解析可能な変数の構造情報(型、タイトル、子プロパティなど)を取得し、利用可能なパスを確認しやすくします。戻り値は meta に基づく静的な記述であり、実際の実行時の値は含まれません。

#型定義

getVarInfos(options?: { path?: string | string[]; maxDepth?: number }): Promise<Record<string, any>>;

戻り値の各キーは変数のパスであり、値はそのパスに対応する構造情報(type、title、properties などを含む)です。

#パラメータ

パラメータ型説明
pathstring | string[]抽出パス。指定したパス配下の変数構造のみを収集します。'record'、'record.id'、'ctx.record'、'{{ ctx.record }}' をサポートしています。配列を指定した場合は複数のパスが統合されます。
maxDepthnumber最大展開階層。デフォルトは 3 です。path を渡さない場合、トップレベルの属性の depth は 1 となります。path を渡した場合、そのパスに対応するノードの depth が 1 となります。

#実行例

// record 配下の変数構造を取得(最大 3 階層まで展開)
const vars = await ctx.getVarInfos({ path: 'record', maxDepth: 3 });

// popup.record の構造を取得
const vars = await ctx.getVarInfos({ path: 'popup.record', maxDepth: 3 });

// すべてのトップレベル変数の構造を取得(デフォルト maxDepth=3)
const vars = await ctx.getVarInfos();

#ctx.getValue との違い

メソッド適用シーン説明
ctx.getValue()JSフィールド、JSアイテムなどの編集可能なフィールド現在のフィールドの値を同期的に取得します。フォームへのバインドが必要です。
ctx.getVar(path)任意の RunJS コンテキスト任意の ctx 変数を非同期で取得します。パスは ctx. で始まる必要があります。

JSフィールド内で自身のフィールドを読み書きする場合は getValue/setValue を使用し、他のコンテキスト変数(record、user、formValues など)にアクセスする場合は getVar を使用します。

#注意事項

  • パスは必ず ctx. で始まる必要があります: ctx.record.id のように指定してください。そうでない場合はエラーがスローされます。
  • 非同期メソッド: 結果を取得するには必ず await を使用してください。例: const id = await ctx.getVar('ctx.record.id')。
  • 変数が存在しない場合: undefined を返します。結果に対して ?? を使用してデフォルト値を設定できます: (await ctx.getVar('ctx.user.nickname')) ?? 'ゲスト'。
  • フォームの値: ctx.formValues は await ctx.getVar('ctx.formValues') を通じて取得する必要があります。ctx.formValues として直接公開されているわけではありません。フォームのコンテキストでは、最新の値をリアルタイムで読み取るために ctx.form.getFieldsValue() を優先的に使用してください。

#実行例

#現在のレコード ID を取得する

const recordId = await ctx.getVar('ctx.record.id');
if (recordId) {
  ctx.message.info(`現在のレコード:${recordId}`);
}

#ポップアップ内のレコードを取得する

const recordId = await ctx.getVar('ctx.popup.record.id');
if (recordId) {
  ctx.message.info(`現在のポップアップレコード:${recordId}`);
}

#配列フィールドのサブアイテムを読み取る

const roleNames = await ctx.getVar('ctx.user.roles.name');
// ロール名の配列を返します。例: ['admin', 'member']

#デフォルト値を設定する

// getVar には defaultValue パラメータがないため、結果の後に ?? を使用します
const userName = (await ctx.getVar('ctx.user.nickname')) ?? 'ゲスト';

#フォームのフィールド値を読み取る

// ctx.formValues と ctx.form はどちらもフォームシーンで使用されます。getVar を使用してネストされたフィールドを読み取れます
const status = await ctx.getVar('ctx.formValues.status');
if (status === 'draft') {
  // ...
}

#URL クエリパラメータを読み取る

const id = await ctx.getVar('ctx.urlSearchParams.id'); // ?id=xxx に対応

#利用可能な変数を探索する

// record 配下の変数構造を取得(最大 3 階層まで展開)
const vars = await ctx.getVarInfos({ path: 'record', maxDepth: 3 });
// vars の形式: { 'record.id': { type: 'string', title: 'id' }, ... }

#関連情報

  • ctx.getValue() - 現在のフィールド値を同期的に取得(JSフィールド/JSアイテムなど限定)
  • ctx.form - フォームインスタンス。ctx.form.getFieldsValue() でフォームの値をリアルタイムに読み取り可能
  • ctx.model - 現在の実行コンテキストが属するモデル
  • ctx.blockModel - 現在の JS が配置されている親ブロック
  • ctx.resource - 現在のコンテキストにおけるリソースインスタンス
  • SQL / テンプレート内の {{ctx.xxx}} - ctx.getVar('ctx.xxx') と同じ解析ルールを使用します