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.t()
AI翻訳通知

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

#ctx.view

現在アクティブなビューコントローラー(ダイアログ、ドロワー、ポップオーバー、埋め込みエリアなど)であり、ビューレベルの情報へのアクセスや操作に使用されます。FlowViewContext によって提供され、ctx.viewer または ctx.openView を通じて開かれたビューのコンテンツ内でのみ利用可能です。

#適用シーン

シーン説明
ダイアログ/ドロワーのコンテンツcontent 内で ctx.view.close() を呼び出して現在のビューを閉じたり、Header や Footer を使用してタイトルやフッターをレンダリングしたりします。
フォーム送信後送信成功後に ctx.view.close(result) を呼び出してビューを閉じ、結果を返します。
JSBlock / アクションctx.view.type に基づいて現在のビュータイプを判断したり、ctx.view.inputArgs から渡されたパラメータを読み取ったりします。
関連選択、子テーブルinputArgs 内の collectionName、filterByTk、parentId などを読み取ってデータロードを行います。

注意:ctx.view は、ビューコンテキストを持つ RunJS 環境(ctx.viewer.dialog() の content 内、ダイアログフォーム、関連セレクター内部など)でのみ利用可能です。通常のページやバックエンドのコンテキストでは undefined になるため、使用時にはオプショナルチェイニング(ctx.view?.close?.())によるチェックを推奨します。

#型定義

type FlowView = {
  type: 'drawer' | 'popover' | 'dialog' | 'embed';
  inputArgs: Record<string, any>;
  Header: React.FC<{ title?: React.ReactNode; extra?: React.ReactNode }> | null;
  Footer: React.FC<{ children?: React.ReactNode }> | null;
  close: (result?: any, force?: boolean) => void;
  update: (newConfig: any) => void;
  navigation?: ViewNavigation;
  destroy?: () => void;
  submit?: () => Promise<any>;  // ワークフロー設定ビューで利用可能
};

#よく使われるプロパティとメソッド

プロパティ/メソッド型説明
type'drawer' | 'popover' | 'dialog' | 'embed'現在のビュータイプ
inputArgsRecord<string, any>ビューを開く際に渡されたパラメータ(詳細は後述)
HeaderReact.FC | nullヘッダーコンポーネント。タイトルや操作エリアのレンダリングに使用
FooterReact.FC | nullフッターコンポーネント。ボタンなどのレンダリングに使用
close(result?, force?)void現在のビューを閉じます。result を渡して呼び出し元に結果を返せます
update(newConfig)voidビューの設定(幅やタイトルなど)を更新します
navigationViewNavigation | undefinedページ内ビューナビゲーション(タブ切り替えなどを含む)

現在、Header と Footer をサポートしているのは dialog と drawer のみです。

#inputArgs の主なフィールド

ビューを開くシーンによって inputArgs のフィールドは異なります。主なものは以下の通りです:

フィールド説明
viewUidビュー UID
collectionNameコレクション名
filterByTk主キーフィルター(単一レコード詳細用)
parentId親 ID(関連シーン用)
sourceIdソースレコード ID
parentItem親アイテムのデータ
sceneシーン(create、edit、select など)
onChange選択または変更後のコールバック
tabUid現在のタブ UID(ページ内)

ctx.getVar('ctx.view.inputArgs.xxx') または ctx.view.inputArgs.xxx を通じてアクセスします。

#例

#現在のビューを閉じる

// 送信成功後にダイアログを閉じる
await ctx.resource.runAction('create', { data: formData });
ctx.view?.close();

// ビューを閉じて結果を返す
ctx.view?.close({ id: newRecord.id, name: newRecord.name });

#コンテンツ内で Header / Footer を使用する

function DialogContent() {
  const ctx = useFlowViewContext();
  const { Header, Footer, close } = ctx.view;
  return (
    <div>
      <Header title="編集" extra={<Button size="small">ヘルプ</Button>} />
      <div>フォーム内容...</div>
      <Footer>
        <Button onClick={() => close()}>キャンセル</Button>
        <Button type="primary" onClick={handleSubmit}>確定</Button>
      </Footer>
    </div>
  );
}

#ビュータイプや inputArgs に基づく分岐

if (ctx.view?.type === 'embed') {
  // 埋め込みビューではヘッダーを非表示にする
  ctx.model.setProps('headerStyle', { display: 'none' });
}

const collectionName = ctx.view?.inputArgs?.collectionName;
if (collectionName === 'users') {
  // ユーザー選択シーンの場合の処理
}

#ctx.viewer、ctx.openView との関係

用途推奨される使い方
新しいビューを開くctx.viewer.dialog() / ctx.viewer.drawer() または ctx.openView()
現在のビューを操作するctx.view.close()、ctx.view.update()
開く際のパラメータを取得するctx.view.inputArgs

ctx.viewer はビューを「開く」役割を担い、ctx.view は「現在」のビューインスタンスを表します。ctx.openView は設定済みのワークフロービューを開くために使用されます。

#注意事項

  • ctx.view はビュー内部でのみ利用可能です。通常のページでは undefined になります。
  • ビューコンテキストがない場合のエラーを避けるため、ctx.view?.close?.() のようにオプショナルチェイニングを使用してください。
  • close(result) で渡された result は、ctx.viewer.open() が返す Promise に渡されます。

#関連情報

  • ctx.openView():設定済みのワークフロービューを開く
  • ctx.modal:軽量なポップアップ(通知、確認など)

ctx.viewer は dialog()、drawer()、popover()、embed() などのメソッドを提供してビューを開きます。これらのメソッドで開かれた content 内で ctx.view にアクセスできます。