Tracker
を使用すると、これを実現できます。
は、ReactiveDict
のインスタンスであり、すべてのキーに「購読する」方法がありません。
これを実装するには、元のset()
メソッドをサルキーパッチでオーバーライドする必要があります。これを行うための
一つの方法は、全体のdictのためのトラッカーの依存関係を作成し、それをキーが設定されるたびに無効化することである:
import { Tracker } from 'meteor/tracker';
import { Session } from 'meteor/session';
const originalSet = Session.set;
Session.keyDependendy = new Tracker.Dependency();
Session.set = function() {
originalSet.apply(this, arguments);
this.keyDependendy.changed();
}
// in your helper
'sessions': function() {
Session.keyDependendy.depend();
return _.keys(Session.keys).sort();
}
あなたはまた、ReactiveDict
のプロトタイプにパッチを適用することによって、それがより一般的にすることができます。
'Session.keys'はキーのみを返します。この場合、 '_.keys'は動作しません。テンプレートヘルパーと 'Session'はデフォルトで反応します。 –
ありがとうございます。私はあなたが私の質問を誤解したと思う。セッション自体は反応的です。セッション辞書のキーはそうではありません。新しいセッションキーが追加されたことを検出できるようにしたいと思います。 – MickaelFM
ReactDictの 'set()'メソッド(セッションはReactiveDictのインスタンスです)を特定の 'Tracker'計算を無効にして、あなたのヘルパーでその計算に依存させて(Monkey-Patchingによって) 。詳細については、[Tracker Manual](https://github.com/meteor/meteor/wiki/Tracker-Manual)を参照してください。 – MasterAM