ProtoViewLogic: curateValues()

関連付けられた要素を特徴づけるプロパティの値を収集します。

構文

protoViewLogic.curateValues() => object

返値: object

関連付けられた要素を示すプロパティ名と収集された値のオブジェクトです。

収集対象となるプロパティは、関連付けられた要素を特徴づけるプロパティです。 これは data-primary 属性が示すプロパティか、それが定義されていなければ、value プロパティの値が使用されます。

const vl = new ProtoViewLogic();
const textarea = document.createElement("textarea");
const fields   = [
    document.createElement("input"),
    document.createElement("input"),
    document.createElement("input")
];

//  textarea, fields をそれぞれ vl へ関連付ける
vl.relateElements({ textarea, fields });

//  vl.fields の各要素を初期化
vl.fields[0].value = "1";
vl.fields[1].value = "2";
vl.fields[2].value = "3";

//  vl.textarea にプロパティ vl.textarea.foo.bar を追加し、
//  vl.textarea に "data-primary" 属性を定義する。
vl.textarea.foo = { bar: 4 };
vl.textarea.dataset.primary = "foo.bar";

console.log(vl.curateValues());
//  ==>  { textarea: 4, fields:  ["1", "2", "3"] } が返却される

解説

関連づけられたある要素について、それを特徴づけるプロパティが未定義か値を持っていない場合、その Element は収集されません。

対象の ProtoViewLogicElement の配列が関連付けられている場合、その配列に含まれる Element を特徴づけるプロパティの値の配列が、関連付けられた Element 配列に対応するプロパティの値として設定されます。

例えば、vl を対象の ProtoViewLogic とし、それに関連付けられた Element 配列が vl.fields として関連付けられていて、各要素は data-primary 属性を持たないとします。この場合、vl.curateValues() の返値は { ..., fields: [ vl.fields[0].value, vl.fields[1].value, ... ], ... } と等価な値になります。