AI翻訳通知

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

ctx.model

現在の RunJS 実行コンテキストが配置されている FlowModel インスタンスであり、JSBlock、JSField、JSAction などのシナリオにおけるデフォルトのエントリポイントです。具体的な型はコンテキストに応じて変化し、BlockModelActionModelJSEditableFieldModel などのサブクラスになる可能性があります。

適用シーン

シナリオ説明
JSBlockctx.model は現在のブロックモデルです。resourcecollectionsetProps などにアクセスできます。
JSField / JSItem / JSColumnctx.model はフィールドモデルです。setPropsdispatchEvent などにアクセスできます。
操作イベント / ActionModelctx.model はアクションモデルです。ステップパラメータの読み書きやイベントのディスパッチなどが可能です。

ヒント:現在の JS を保持している親ブロック(フォームやテーブルブロックなど)にアクセスする必要がある場合は ctx.blockModel を使用し、他のモデルにアクセスする場合は ctx.getModel(uid) を使用します。

型定義

model: FlowModel;

FlowModel は基底クラスであり、実際の実行時はさまざまなサブクラス(BlockModelFormBlockModelTableBlockModelJSEditableFieldModelActionModel など)のインスタンスとなります。利用可能なプロパティやメソッドは型によって異なります。

常用プロパティ

プロパティ説明
uidstringモデルの一意識別子。ctx.getModel(uid) やポップアップの UID バインドに使用できます。
collectionCollection現在のモデルにバインドされているコレクション(ブロックやフィールドがデータにバインドされている場合に存在します)。
resourceResource関連付けられたリソースインスタンス。リフレッシュや選択行の取得などに使用されます。
propsobjectモデルの UI/動作設定。setProps を使用して更新できます。
subModelsRecord<string, FlowModel>子モデルの集合(フォーム内のフィールド、テーブル内の列など)。
parentFlowModel親モデル(存在する場合)。

常用メソッド

メソッド説明
setProps(partialProps: any): voidモデルの設定を更新し、再レンダリングをトリガーします(例:ctx.model.setProps({ loading: true }))。
dispatchEvent(eventName: string, payload?: any, options?: any): Promise<any[]>モデルにイベントをディスパッチし、そのモデル上で設定された、そのイベント名をリッスンするワークフローをトリガーします。オプションの payload はワークフローのハンドラーに渡されます。options.debounce でデバウンスを有効にできます。
getStepParams?.(flowKey, stepKey)設定フローのステップパラメータを読み取ります(設定パネルやカスタムアクションなどのシナリオで使用)。
setStepParams?.(flowKey, stepKey, params)設定フローのステップパラメータを書き込みます。

ctx.blockModel、ctx.getModel との関係

ニーズ推奨される使い方
現在の実行コンテキストのモデルctx.model
現在の JS の親ブロックctx.blockModelresourceformcollection へのアクセスによく使用されます。
UID で任意のモデルを取得ctx.getModel(uid) または ctx.getModel(uid, true)(ビュースタックを横断して検索)。

JSField 内では、ctx.model はフィールドモデルであり、ctx.blockModel はそのフィールドを保持するフォーム/テーブルブロックです。

実行例

ブロック/アクションの状態を更新する

ctx.model.setProps({ loading: true });
await doSomething();
ctx.model.setProps({ loading: false });

モデルイベントをディスパッチする

// イベントをディスパッチし、このモデル上で設定された、このイベント名をリッスンするワークフローをトリガーします
await ctx.model.dispatchEvent('remove');
// payload を指定すると、ワークフローハンドラーの ctx.inputArgs に渡されます
await ctx.model.dispatchEvent('customEvent', { id: 123 });

UID を使用したポップアップのバインドまたはモデル間アクセス

const myUid = ctx.model.uid;
// ポップアップの設定で openerUid: myUid を渡すことで関連付けが可能です
const other = ctx.getModel('other-block-uid');
if (other) other.rerender?.();

関連情報