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.form
Next Pagectx.getValue()
AI翻訳通知

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

#ctx.getModel()

モデルの uid に基づいて、現在のエンジンまたはビュー履歴(View Stack)内のモデルインスタンス(BlockModel、PageModel、ActionModel など)を取得します。これは RunJS において、ブロック、ページ、またはポップアップを跨いで他のモデルにアクセスするために使用されます。

現在の実行コンテキストが存在するモデルやブロックのみが必要な場合は、ctx.getModel を使用するのではなく、ctx.model または ctx.blockModel を優先的に使用してください。

#適用シーン

シーン説明
JSBlock / JSAction既知の uid に基づいて他のブロックのモデルを取得し、その resource、form、setProps などを読み書きします。
ポップアップ内の RunJSポップアップ内からそれを開いたページ上のモデルにアクセスする必要がある場合、searchInPreviousEngines: true を渡します。
カスタム操作ビュー履歴を跨いで uid により設定パネル内のフォームや子モデルを特定し、その設定や状態を読み取ります。

#型定義

getModel<T extends FlowModel = FlowModel>(
  uid: string,
  searchInPreviousEngines?: boolean
): T | undefined

#パラメータ

パラメータ型説明
uidstringターゲットモデルインスタンスの一意識別子。設定時または作成時に指定されます(例:ctx.model.uid)。
searchInPreviousEnginesbooleanオプション、デフォルトは false。true の場合、「ビュー履歴」において現在のエンジンからルートに向かって検索し、上位エンジン(ポップアップを開いた元のページなど)のモデルを取得できます。

#戻り値

  • 見つかった場合は、対応する FlowModel のサブクラスインスタンス(BlockModel、FormBlockModel、ActionModel など)を返します。
  • 見つからない場合は undefined を返します。

#検索範囲

  • デフォルト(searchInPreviousEngines: false): 現在のエンジン内のみで uid を検索します。ポップアップや多階層のビューでは、各ビューが独立したエンジンを持つため、デフォルトでは現在のビュー内のモデルのみを検索します。
  • searchInPreviousEngines: true: 現在のエンジンから開始し、previousEngine チェーンを遡って検索し、最初に見つかったものを返します。ポップアップ内からそれを開いたページのモデルにアクセスする場合に適しています。

#示例

#他のブロックを取得してリフレッシュ

const block = ctx.getModel('list-block-uid');
if (block?.resource) {
  await block.resource.refresh();
}

#ポップアップ内からページ上のモデルにアクセス

// ポップアップ内から、それを開いたページ上のブロックにアクセスする
const pageBlock = ctx.getModel('page-block-uid', true);
if (pageBlock) {
  pageBlock.rerender?.();
}

#モデルを跨いだ読み書きと再レンダリング(rerender)のトリガー

const target = ctx.getModel('other-block-uid');
if (target) {
  target.setProps({ loading: true });
  target.rerender?.();
}

#安全な判定(存在チェック)

const model = ctx.getModel(someUid);
if (!model) {
  ctx.message.warning('ターゲットモデルが存在しません');
  return;
}

#関連情報

  • ctx.model:現在の実行コンテキストが存在するモデル
  • ctx.blockModel:現在の JS が配置されている親ブロックのモデル。通常、getModel を使わずにアクセス可能です。