我有以下非常简单的Meteor应用程序:
tags.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对象:
tags.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);
}
});
}
......一切正常。
任何人都可以获得更多的光吗?
答案 0 :(得分:3)
这很正常。相关文档为here:
可以触发更改的被动数据源是:
- 会话变量
- 对集合的数据库查询
- Meteor.status
- Meteor.user
- Meteor.userId
- Meteor.loggingIn