我正在做一个像这样的简单函数:
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() 不会触发模板的自动更新。我怀疑这是因为数组引用没有改变[即使内容有]。触发更新的最佳方式是什么?
我的 hacky 解决方法是在 Game.msg 中设置一个虚拟计数变量 (var c = Session.get("message_count")) 并在 Template.field.messages 中引用,如下所示:
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");
};