私はこのような単純な関数を作成しています:
Game.msg = function(msg){
var m = Session.get("messages") || [];
m.push({"text": msg});
Session.set("messages", m);
};
およびテンプレート:
Template.field.messages = function(){
return Session.get("messages");
};
Game.msg()をトリガーしても、テンプレートの自動更新はトリガーされません。配列参照が変更されていないためだと思います[内容は変更されていますが]。更新をトリガーする最良の方法は何ですか?
私のハッキーな回避策は、Game.msgで設定し、Template.field.messagesで参照するダミーのカウント変数(var c = Session.get( "message_count"))を次のように設定することです。
Game.msg = function(msg){
var m = Session.get("messages") || [];
m.push({"text": msg});
// silly, but adding a count so the array size changes and triggers a flush
Session.set("messages", m);
Session.set("message_count", m.length);
};
Template.field.messages = function(){
var c = Session.get("message_count");
return Session.get("messages");
};