このドキュメントはAIによって翻訳されました。正確な情報については英語版をご参照ください。
現在のコンテキストにおける FlowResource インスタンスであり、データへのアクセスや操作に使用されます。ほとんどのブロック(フォーム、テーブル、詳細など)やポップアップのシナリオでは、実行環境によって ctx.resource があらかじめバインドされています。JSBlock など、デフォルトで resource が存在しないシナリオでは、まず ctx.initResource() を呼び出して初期化してから ctx.resource を使用する必要があります。
RunJS 内で構造化データ(リスト、単一レコード、カスタム API、SQL)へのアクセスが必要なあらゆるシーンで使用できます。フォーム、テーブル、詳細ブロック、およびポップアップは通常、既にあらかじめバインドされています。JSBlock、JSField、JSItem、JSColumn などでデータをロードする必要がある場合は、まず ctx.initResource(type) を呼び出してから ctx.resource にアクセスしてください。
ctx.resource は対応する resource インスタンスになります。undefined となり、ctx.initResource(type) を実行した後に値が設定されます。リソースのタイプ(MultiRecordResource、SingleRecordResource、APIResource、SQLResource)によって公開されているメソッドは若干異なりますが、以下は共通または頻繁に使用されるメソッドです:
| メソッド | 説明 |
|---|---|
getData() | 現在のデータを取得(リストまたは単一レコード) |
setData(value) | ローカルデータを設定 |
refresh() | 現在のパラメータでリクエストを発行し、データをリフレッシュ |
setResourceName(name) | リソース名を設定(例: 'users', 'users.tags') |
setFilterByTk(tk) | 主キーによるフィルタリングを設定(単一レコードの取得など) |
runAction(actionName, options) | 任意のリソースアクション(create, update など)を呼び出し |
on(event, callback) / off(event, callback) | イベントの購読/解除(refresh, saved など) |
MultiRecordResource 特有: getSelectedRows()、destroySelectedRows()、setPage()、next()、previous() など。
ctx.resource が存在しない場合は作成してバインドし、既に存在する場合はそれを直接返します。これにより ctx.resource が利用可能であることを保証します。ctx.resource には書き込みません。複数の独立したリソースが必要な場合や、一時的な使用に適しています。undefined となるため、先に ctx.initResource を行う必要があります。ctx.resource?.refresh() のように空値チェックを行うことを推奨します。特に JSBlock など、あらかじめバインドされていない可能性があるシーンでは重要です。setResourceName(name) を呼び出してデータテーブルを指定し、その後に refresh() でデータをロードする必要があります。ctx.resource にはバインドしない)