ProtoViewLogic: createElement()
与えられた記述子に基づいて Element を生成します。
構文
ProtoViewLogic.createElement(componentDescriptor) => Element
引数
-
componentDescriptor:object定義する
Elementの記述子です。これは以下のプロパティを持つオブジェクトです:
-
tagName:string定義する
Elementのタグ名を指定します -
value:string|undefined(省略可)定義する
Elementのvalue属性の値を指定しますinfovalueの指定はattributes内のvalue属性の指定に優先します(後者の値は前者の値で上書きされます)
-
text:string|undefined(省略可)定義する
ElementのtextContentを指定しますinfochildrenプロパティと併用した際、textは定義されるElementの最初のノード (firstNode) として登録されます(結果としてchildrenのインデックスは 1 つずれることに注意してください)
-
children:Array<Element | string | object>|undefined(省略可)定義する
Elementの子のノードとなる要素、テキスト、または要素の記述子を指定しますinfotextプロパティと併用した際、定義されるElementの最初のノード (firstNode) としてtextが先に登録され、それに続いてchildrenの成分が追加されます(結果としてchildrenのインデックスは 1 つずれることに注意してください)
-
primary:string|undefined(省略可)定義する
Elementのdata-primaryカスタムデータ属性の値を指定しますinfoprimaryの指定はattributes内のdata-primary属性の指定に優先します(後者の値は前者の値で上書きされます)
-
activeEvents:string|Array<string>|undefined(省略可)定義する
Elementのdata-active-eventsカスタムデータ属性を指定しますinfoactiveEventsの指定はattributes内のdata-active-events属性の指定に優先します(後者の値は前者の値で上書きされます)stringとして指定した場合、カンマ区切りされたイベント種別の文字列になっていなければなりません
-
attributes:object|undefined(省略可)定義する
Elementの属性を指定します。定義する属性と同じ名前を持つプロパティに、設定する値を持たせたオブジェクトを指定します。
infovalue,primary,activeEventsプロパティの指定はattributes内のvalue,data-primary,data-active-events属性の指定に優先します(後者の値は前者の値で上書きされます)attributes内のid属性の指定は常に無視され、記述子を持つプロパティ名 またはそれに配列の添え字を付けたものが使用されます(前者はcomponentDescriptorsのプロパティがobjectの場合、後者はobjectの配列だった場合に使用されます)
-
返値: Element
引数 componentDescriptor に従って初期化された Element。
例外
AggregateError- 以下のいずれかの例外が発生した場合、それらを集約した
AggregateErrorが発生します:TypeError: 値componentDescriptorが非nullのオブジェクトでなかった場合TypeError: 値componentDescriptor.tagNameが文字列でなかった場合TypeError: 値componentDescriptor.valueがnullでも文字列でもなかった場合TypeError: 値componentDescriptor.textがnullでも文字列でもなかった場合TypeError: 値componentDescriptor.childrenがnullでも反復可能オブジェクト (iterable) でもなかった場合TypeError: 値componentDescriptor.primaryがnullでも文字列でもなかった場合TypeError: 値componentDescriptor.activeEventsがnullでも文字列でも反復可能オブジェクト (iterable) でもなかった場合TypeError: 値componentDescriptor.attributesがnullでも非nullオブジェクトでもなかった場合TypeError: 記述子のプロパティtagNameがタグ名として正しくなかった場合TypeError: 記述子のプロパティactiveEventsが文字列でない成分を含んでいた場合TypeError: 記述子のプロパティactiveEventsが空文字列または空白のみからなる文字列を含んでいた場合TypeError: 記述子のプロパティattributesが空文字列または空白のみからなる文字列をキーとするプロパティを持っていた場合TypeError: 記述子のプロパティattributesがNaNを値とするプロパティを持っていた場合TypeError: 記述子のプロパティattributesがSymbol型の値のプロパティを持っていた場合TypeError: 記述子のプロパティattributesがfunction型の値のプロパティを持っていた場合TypeError: 記述子のプロパティchildrenがElementでも文字列でも非nullのオブジェクトでもなかった場合
- 以下のいずれかの例外が発生した場合、それらを集約した
例
// SP
const { ProtoViewLogic } = await Alier.import("/alier_sys/ProtoViewLogic.js");
// Web
// import { ProtoViewLogic } from "/path/to/alier/src/ProtoViewLogic.js";
// <button> 要素を生成する
const button_ok = ProtoViewLogic.createElement({
tagName : "button",
value : "ok",
text : "OK",
activeEvents: "click",
attributes : { type: "button" }
});
// 生成した button_ok の内容を確認する
console.log(button_ok);
// ==> HTMLButtonElement
解説
与えられた引数 componentDescriptor に従って、Element を生成します。
note
- この関数は
ProtoViewLogic.createUiComponents()の中で呼び出されます