AI翻訳通知
このドキュメントはAIによって翻訳されました。正確な情報については英語版をご参照ください。
ctx.resource
現在のコンテキストにおける FlowResource インスタンスであり、データへのアクセスや操作に使用されます。ほとんどのブロック(フォーム、テーブル、詳細など)やポップアップのシナリオでは、実行環境によって ctx.resource があらかじめバインドされています。JSBlock など、デフォルトで resource が存在しないシナリオでは、まず ctx.initResource() を呼び出して初期化してから ctx.resource を使用する必要があります。
適用シーン
RunJS 内で構造化データ(リスト、単一レコード、カスタム API、SQL)へのアクセスが必要なあらゆるシーンで使用できます。フォーム、テーブル、詳細ブロック、およびポップアップは通常、既にあらかじめバインドされています。JSBlock、JSField、JSItem、JSColumn などでデータをロードする必要がある場合は、まず ctx.initResource(type) を呼び出してから ctx.resource にアクセスしてください。
型定義
- あらかじめバインドされているコンテキストでは、
ctx.resourceは対応する resource インスタンスになります。 - JSBlock など、デフォルトで resource がない場合は
undefinedとなり、ctx.initResource(type)を実行した後に値が設定されます。
よく使われるメソッド
リソースのタイプ(MultiRecordResource、SingleRecordResource、APIResource、SQLResource)によって公開されているメソッドは若干異なりますが、以下は共通または頻繁に使用されるメソッドです:
MultiRecordResource 特有: getSelectedRows()、destroySelectedRows()、setPage()、next()、previous() など。
例
リストデータ(先に initResource が必要)
テーブルシーン(あらかじめバインド済み)
単一レコード
カスタムアクションの呼び出し
ctx.initResource / ctx.makeResource との関係
- ctx.initResource(type):
ctx.resourceが存在しない場合は作成してバインドし、既に存在する場合はそれを直接返します。これによりctx.resourceが利用可能であることを保証します。 - ctx.makeResource(type): 新しい resource インスタンスを作成して返しますが、
ctx.resourceには書き込みません。複数の独立したリソースが必要な場合や、一時的な使用に適しています。 - ctx.resource: 現在のコンテキストにバインドされている resource にアクセスします。ほとんどのブロックやポップアップでは既にあらかじめバインドされています。バインドされていない場合は
undefinedとなるため、先にctx.initResourceを行う必要があります。
注意事項
- 使用前に
ctx.resource?.refresh()のように空値チェックを行うことを推奨します。特に JSBlock など、あらかじめバインドされていない可能性があるシーンでは重要です。 - 初期化後は
setResourceName(name)を呼び出してデータテーブルを指定し、その後にrefresh()でデータをロードする必要があります。 - 各 Resource 型の完全な API については、以下のリンクを参照してください。
関連情報
- ctx.initResource() - リソースを初期化して現在のコンテキストにバインドする
- ctx.makeResource() - 新しいリソースインスタンスを作成する(
ctx.resourceにはバインドしない) - MultiRecordResource - 複数レコード/リスト
- SingleRecordResource - 単一レコード
- APIResource - 汎用 API リソース
- SQLResource - SQL クエリリソース

