ViewLogic
概要
ユーザとモデルインタフェースを仲介するクラスです。
詳細は ViewLogic モジュール を参照してください。
メソッド
attachTo()
ViewLogicをViewElementに取り付けます。
detachFrom()
ViewLogicをViewElementから取り外します。
parseHtmlToContainer()
- HTML 文字列をパースし、パース結果からコンテナを取得します。
post()
- 対象の
ViewLogicにメッセージを送ります。
setContainer()
- 対象の
ViewLogicのコンテナを与えられたElementで置き換えます。
loadContainer()
- テキストやファイルからコンテナを読み込みます。
loadContainerSync()
- テキストやファイルからコンテナを同期で読み込みます。
replaceWithGrid()
- 呼び出し先の
ViewLogicのコンテンツcontainerを、ViewLogicに関連付けられた(ProtoViewLogic.relateElements()参照)Elementをグリッドレイアウトしたもので置換します。
プロパティ
container
ViewElement に反映するコンテンツのルート要素です。
型
HTMLElement
host
このプロパティは読み取り専用です。
自身のコンテナが取り付けられている ViewElement です。
型
ViewElement | null
詳細
取り付けられた ViewElement がない場合、プロパティ host の値は null となります。
このプロパティは ViewElement のメソッド attach() および detach() によって変更されます。
ViewElement::attach() で呼び出し先の ViewElement が host に設定されます。このとき、この ViewLogic に対してメッセージ { id: "vl$attached" } が post() されます。メッセージのパラメータについては attachTo を参照してください。
ViewElement::detach() で呼び出し先の ViewElement が host に設定されていたら、host は null に変更されます。このとき、この ViewLogic に対してメッセージ { id: "vl$detached" } が post() されます。メッセージのパラメータについては detachFrom() を参照してください。
例
const vl = new class extends ViewLogic {
async messageHandler(msg) {
return msg.deliver({
vl$attached: (msg) => {
const { target, newHost } = msg.param;
console.log("attached!", target, newHost);
},
vl$detached: (msg) => {
const { target, oldHost } = msg.param;
console.log("detached!", target, oldHost);
},
});
}
};
// Alier.View に vl を取り付ける
Alier.View.attach(vl);
// Alier.View から vl を取り外す
Alier.View.detach();
// static attachTo() を使って vl を Alier.View に取り付ける (Alier.View.attach(vl) と等価)
ViewLogic.attachTo(vl, Alier.View);
// static detachFrom() を使って vl を Alier.View から取り外す (vl.host === Alier.View && Alier.View.detach() と等価)
ViewLogic.attachTo(vl, Alier.View);
styles
このプロパティは読み取り専用です。
コンテナ要素に適用するスタイル定義を保持するためのラッパーオブジェクトです。
型
HTMLDivElement
詳細
子要素としてコンテナから取り出した <style> および <link rel="stylesheet"> を持ちます。
コンストラクタを呼び出してコンテナ要素の読み込みが完了した後、コンテナに含まれるすべてのスタイル定義がプロパティ styles の子要素に移動されます。
このプロパティは読み取り専用です。