AlierView
モジュールパス: /alier_sys/AlierView.js
概要
AlierView は、ViewLogic を取り付け、ViewLogic インスタンスが管理するHTMLコンテンツを描画するためのカスタム要素を提供するクラスです。
AlierView.js モジュールが読み込まれる際、AlierView をコンストラクタとしてカスタム要素 <alier-view> が定義されます。
<p>Contents managed by a ViewLogic will be inserted the alier-view element below by a script.</p>
<alier-view id="my-alier-view">
</alier-view>
AlierView インスタンスに ViewLogic インスタンスを取り付けるには、AlierView インスタンスを対象に attach() 関数を呼び出します。
const alierView = new AlierView();
const viewLogic = new ViewLogic();
// viewLogic を alierView に取り付ける
alierView.attach(viewLogic);
上記の例では ViewLogic のインスタンスのコンテナは空であるため、実際には何も描画されませんが、loadContainer() などの関数を利用することで ViewLogic インスタンスのコンテナに内容を持たせると、それが <alier-view> の配置された箇所に描画されるようになります。
取り付けた ViewLogic インスタンスを取り外すには detach() 関数を使います。detach() 関数を呼び出すと、その ViewLogic インスタンスが持っていたコンテナはDOMツリーから取り外され、また AlierView インスタンスは取り外した ViewLogic インスタンスへの参照を失います。
同様の効果は、すでに ViewLogic インスタンスが取り付けられている AlierView インスタンスに対して、別の ViewLogic インスタンスを引数として attach() 関数を呼ぶことでも生じます。
const alierView = new AlierView();
const viewLogic = new ViewLogic();
const anotherViewLogic = new ViewLogic();
// viewLogic を alierView に取り付ける
alierView.attach(viewLogic);
// viewLogic を alierView から取り外す
alierView.detach();
// viewLogic を alierView に取り付ける
alierView.attach(viewLogic);
// anotherViewLogic を alierView に取り付ける。
// 以前取り付けられた viewLogic は取り外される。
alierView.attach(anotherViewLogic);
コンテナの内容の表示・非表示はそれぞれ show() 関数と hide() 関数によって切り替えることができます。また、AlierView 全体に適用するスタイルシートを設定するために setStyleSheets() 関数を利用できます。
// alierView の内容を非表示にする
alierView.hide();
// すべての AlierView インスタンスに ./my-theme.css のスタイルを適用する
await AlierView.setStyleSheets(false, "./my-theme.css");
// alierView の内容を表示する
alierView.show();
ViewLogic インスタンスの取り付けられた AlierView インスタンスに対して、post() 関数および broadcast() 関数によってメッセージを送ることができます。
// alierView に取り付けられた ViewLogic インスタンスにメッセージを送る
// 送られたメッセージは宛先の ViewLogic インスタンスかその祖先に渡されて処理される。
alierView.post({ id: "foo", code: "bar", param: { baz: "qux" }, origin: alierView });
// alierView に取り付けられた ViewLogic インスタンスにメッセージを送る
// 送られたメッセージは宛先の ViewLogic インスタンスの子孫に渡されて処理される。
alierView.broadcast({ id: "foo", code: "bar", param: { baz: "qux" }, origin: alierView });
メソッド
attach()
- 対象の
AlierViewに与えられたViewLogicを取り付けます。また取り付けられたViewLogicが持つコンテナの内容を表示します。
detach()
- 対象の
AlierViewに取り付けられているViewLogicを取り外します。
show()
- 対象の
AlierViewに取り付けられたViewLogicのコンテナの内容を表示します。
hide()
- 対象の
AlierViewに取り付けられたViewLogicのコンテナの内容を非表示にします。
setStyleSheets()
AlierViewに共通のスタイルシートを適用します。このメソッドは静的メソッドです。
post()
- 対象の
AlierViewに取り付けられたViewLogicにメッセージを送ります。
broadcast()
- 対象の
AlierViewに取り付けられたViewLogicの子孫にメッセージを送ります。
プロパティ
logic
このプロパティは読み取り専用です。
AlierView に取り付けられている ViewLogic です。
型
ViewLogic | null
詳細
ViewLogic が取り付けられているなら、その参照です。何も取り付けられてなければ null です。
この値は attach() 関数や detach() 関数によって変更されます。
adoptedStyleSheets
AlierView に適用されるスタイルシートの配列です。
型
CSSStyleSheets[]
詳細
この静的プロパティは AlierView で管理されるスタイルシートを保持し、Document の adoptedStyleSheets プロパティに似たインターフェースを提供します。
プロパティに値を設定すると、AlierView の持つシャドウツリー内部にスタイルが適用されます。
この値は setStyleSheets() 関数によって変更されます。