1

良い反応性に満ちたオブジェクトを考えると、

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か、 を呼び出して依存関係を作成することです。barbaz.get()

まだ定義されていないオブジェクト フィールドの作成にどのように対応すればよいですか? 答えはES5の方がいいと思いますが、ES6でもES7でも大丈夫です。

4

0 に答える 0