良い反応性に満ちたオブジェクトを考えると、
var obj = {
foo : new ReactiveVar(0),
bar : new ReactiveVar(0)
};
Tracker 計算を使用して、これらのフィールドに簡単に対応できます。
Tracker.autorun(function logObj() {
console.log('obj.foo is:', obj.foo.get());
console.log('obj.bar is:', obj.bar.get());
});
ただし、後日定義されることがわかっていて、定義されたらすぐobj.baz
に対応したい場合は、それを行うことはできません。
Tracker.autorun(function logObj() {
console.log('obj.foo is:', obj.foo.get());
console.log('obj.bar is:', obj.bar.get());
if(obj.hasOwnProperty('baz')) console.log('obj.baz is:', obj.baz.get());
});
これは、obj.baz
定義せずに実行すると、依存関係が追加されず、表示または変更されても再実行されないために発生します。obj.baz
反応する唯一の方法は、 が定義されている間に計算を無効にするfoo
か、 を呼び出して依存関係を作成することです。bar
baz
.get()
まだ定義されていないオブジェクト フィールドの作成にどのように対応すればよいですか? 答えはES5の方がいいと思いますが、ES6でもES7でも大丈夫です。