我有以下非常简单的 Meteor 应用程序:
在标签.html
<body>
{{> tags}}
</body>
<template name="tags">
<input type="button" id="submit" value="Change tag" />
{{tags}}
</template>
...在 tags.js 中
var tags = 1;
if (Meteor.isClient) {
Template.tags.tags = function() {
return tags;
};
Template.tags.events({
'click #submit': function() {
console.log("You pressed the button");
tags += 1;
}
});
}
当我启动应用程序时,我会得到一个按钮和旁边的 var 标记 (1) 的初始值,这是正确的。然后,当我单击按钮时,标签的值会增加(我可以在控制台中检查),但模板不会重新渲染。这是正常行为吗?我不确定我应该期待什么 - 在文档中找不到任何可以告诉我实时模板何时重新渲染的内容。
但是,如果我将 var 更改为使用 Session 对象:
在标签.html
<body>
{{> tags}}
</body>
<template name="tags">
<input type="button" id="submit" value="Change tag" />
{{tags}}
</template>
...在 tags.js 中
var tags = Session.set("tags", 1);
if (Meteor.isClient) {
Template.tags.tags = function() {
return Session.get("tags");
};
Template.tags.events({
'click #submit': function() {
console.log("You pressed the button");
Session.set("tags", Session.get("tags") + 1);
}
});
}
...一切正常。
谁能阐明更多?