AI翻訳通知

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

ctx.initResource()

現在のコンテキストのリソースを初期化します。ctx.resource がまだ存在しない場合は、指定されたタイプで作成してコンテキストにバインドします。既に存在する場合は、それを直接使用します。初期化後は ctx.resource を通じてアクセスできます。

適用シーン

通常、JSBlock(独立ブロック)のシナリオで使用されます。ほとんどのブロックやポップアップなどでは ctx.resource が事前にバインドされているため、手動で呼び出す必要はありません。JSBlock はデフォルトでリソースを持っていないため、ctx.initResource(type) を呼び出してから ctx.resource を介してデータをロードする必要があります。

型定義

initResource(
  type: 'APIResource' | 'SingleRecordResource' | 'MultiRecordResource' | 'SQLResource'
): FlowResource;
引数説明
typestringリソースタイプ:'APIResource''SingleRecordResource''MultiRecordResource''SQLResource'

戻り値:現在のコンテキスト内のリソースインスタンス(つまり ctx.resource)。

ctx.makeResource() との違い

メソッド動作
ctx.initResource(type)ctx.resource が存在しない場合は作成してバインドし、存在する場合はそれを返します。ctx.resource が利用可能であることを保証します。
ctx.makeResource(type)新しいインスタンスを作成して返すだけで、ctx.resource には書き込みません。複数の独立したリソースが必要な場合や、一時的な使用に適しています。

例文

リストデータ(MultiRecordResource)

ctx.initResource('MultiRecordResource');
ctx.resource.setResourceName('users');
await ctx.resource.refresh();
const rows = ctx.resource.getData();
ctx.render(<pre>{JSON.stringify(rows, null, 2)}</pre>);

単一レコード(SingleRecordResource)

ctx.initResource('SingleRecordResource');
ctx.resource.setResourceName('users');
ctx.resource.setFilterByTk(1); // 主キーを指定
await ctx.resource.refresh();
const record = ctx.resource.getData();

データソースの指定

ctx.initResource('MultiRecordResource');
ctx.resource.setDataSourceKey('main');
ctx.resource.setResourceName('orders');
await ctx.resource.refresh();

注意事項

  • ほとんどのブロック(フォーム、テーブル、詳細など)やポップアップのシナリオでは、ctx.resource は実行環境によって事前にバインドされているため、ctx.initResource を呼び出す必要はありません。
  • JSBlock など、デフォルトでリソースがないコンテキストでのみ手動での初期化が必要です。
  • 初期化後、setResourceName(name) を呼び出してコレクションを指定し、refresh() を実行してデータをロードする必要があります。

関連情報