ObservableValue: setValue

渡された引数で監視対象の値を更新します。

構文

observableValue.setValue(newValue) => boolean

引数

  • target: string | number | boolean | bigint

    更新する値です。

返値: boolean

値の更新に成功したかどうかです。

もし元の値と引数で渡された値が等しい場合は false、そうでなければ true となります。

値の更新に成功した場合は true が返され、等しい場合は false が返されます。

const ov = new ObservableValue("Alice");

ov.setValue("Bob");
// => true

console.log(ov.getValue());
// => "Bob"

ov.setValue("Bob");
// => false

元の値が文字列以外で、引数で渡された値が文字列だった場合、元の値の型に変換した値で更新を行います。

const ov_num = new ObservableValue(0);

ov.setValue("42");
console.log(ov.getValue());
// => 42

const ov_bool = new ObservableValue(false);

ov.setValue("true");
console.log(ov.getValue());
// => true

値を更新した後、バインドされているターゲットオブジェクトの setValue を呼び出し、値を同期します。

ObservableValue.setValue で値を更新すると、ターゲットの値も更新されます。

// ターゲットオブジェクトを生成する
const target = create_target("Alice");

const ov = new ObservableValue("Bob");
ov.bindData(target);

ov.setValue("Carol");

console.log(target.getValue());
// => "Carol"

次のサンプルコードはターゲットオブジェクトを生成するファクトリ関数の実装例です。

function create_target(value) {
    let private_value = value;

    return {
        setValue(newValue) {
            private_value = newValue;
            return this.source?.setValue(private_value);
        },
        onDataBinding(source) {
            this.source = source;
            return true;
        },
        getValue() {
            return private_value;
        },
    };
}