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;
},
};
}