次の非常に単純な 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) が表示されます。これは正しいです。次に、ボタンをクリックすると、タグの値が増加します (コンソールで確認できます) が、テンプレートは再レンダリングされません。これは正常な動作ですか?私は何を期待すべきかわかりません.ライブテンプレートがいつ再レンダリングされるかを正確に教えてくれるドキュメントは見つかりませんでした.
ただし、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);
}
});
}
...すべて正常に動作します。
誰かがもう少し光を当てることができますか?