はい、セッション値を購読できます。
自動サブスクライブのドキュメントをご覧ください。
http://docs.meteor.com/#meteor_autosubscribe
// Subscribe to the chat messages in the current room. Automatically
// update the subscription whenever the current room changes.
Meteor.autosubscribe(function () {
Meteor.subscribe("chat", {room: Session.get("current-room");});
});
このコード ブロックは、これを使用する 1 つの方法を示しています。基本的に、"current-room" の値が変更されるたびに、Meteor はビューを更新します。
編集
私は最初の質問を誤解し、自分自身をいくらか償う必要があると判断しました. いくつかのテストを行ったところ、現在のところ、collection.find() および session.get() 呼び出しのみをサブスクライブできることがわかります。そのため、セッション オブジェクト全体やキー オブジェクトをサブスクライブすることはできません。
ただし、オブジェクトにセッション値を設定することはできますが、これは最も洗練された解決策ではないかもしれませんが、循環オブジェクト エラーが発生しないようにするためのいくつかのハッカーでキー オブジェクトを追跡するのに役立ちました。
var mySession = {
set: function(key, val){
var keys = Session.keys,
map = {};
Session.set(key, val);
for (var prop in keys) {
if(!(prop === "keys")){
map[prop] = keys[prop];
}
}
Session.set('keys', map);
}
};
これにより、元の機能とよく似た機能が提供され、セッション値を追加または変更するときにテンプレートを追跡および更新するのに役立ちます。
これが私のテンプレートヘルパーです(以前の回答から借用):
Template.hello.keys = function() {
map = [];
keys = Session.get('keys');
for (var prop in keys) {
map.push({key:prop, value:keys[prop]});
}
return map
};
そして、実際のテンプレートは次のとおりです。
<template name="hello">
<div class="hello">
{{#each keys}}
{{key}} {{value}} <br />
{{/each}}
</div>
</template>
このように、 mySession.set("thing", "another thing") を呼び出すだけで、画面上で更新されます。私はJavascriptを初めて使用するので、ここで明らかな何かが欠けているかどうかを誰かに知らせてください。または、これを行うためのよりエレガントな方法があるかどうかを教えてください。