ListView: attach()
ListView に追加する ViewLogic のコンストラクタを template プロパティに登録します。
構文
listView.attach(archetype) => ViewLogic[]
引数
返値: ViewLogic[]
detach() された ViewLogic の配列です。
何も detach() されなかった場合は空の配列を返します。
例外
TypeError- 引数
archetypeがViewLogicクラスのインスタンスでなかった場合
- 引数
例
const listVl = new class ListVl extends ViewLogic {
constructor() {
super();
this.loadContainer({
text: `<alier-list-view id="list"></alier-list-view>`,
id: "list",
});
this.relateElements(this.collectElements(this.container));
}
};
const archetype = new class ListItemVl extends ViewLogic {
constructor() {
super();
this.loadContainer({
text: `
<head><style>
.hello {
--border-width: 2px;
}
.hello:nth-child(3n) {
background-color: lightblue;
}
.hello:nth-child(5n) {
border: var(--border-width) solid orange;
}
:not(.hello:nth-child(5n)) {
padding: var(--border-width);
}
</style></head>
<body>
<div id="hello" class="hello"><span>Hello!</span></div>
</body>
`,
id: "hello",
});
this.relateElements(this.collectElements(this.container));
}
};
Alier.View.attach(listVl);
// listVl.container に archetype のコンストラクタ(ListItemVl)をテンプレートとして設定する
listVl.container.attach(archetype);
// listVl に ListItemVl から生成した要素を 15 個追加する
listVl.container.splice(0, 0, 15);
解説
引数 archetype のコンストラクタを template プロパティに設定します。archetype のコンストラクタが template プロパティに設定されたコンストラクタと同一ならこの関数は何も行いません。
基底クラス ViewElement の実装する attach() 関数と異なり、引数 archetype そのものは ListView に取り付けられず、従ってその host プロパティが変更されることも、messageHandler() 関数が呼び出されることもありません。
既に対象の ListView に ViewLogic のコンストラクタが取り付けられている場合、この関数の呼び出しの中で対象の ListView は detach() を実行します。