Meteor live模板和纯JS变量

时间:2013-01-21 11:57:18

标签: meteor

我有以下非常简单的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);
        }
    });
}

......一切正常。

任何人都可以获得更多的光吗?

1 个答案:

答案 0 :(得分:3)

这很正常。相关文档为here

  

可以触发更改的被动数据源是:

     
      
  • 会话变量
  •   
  • 对集合的数据库查询
  •   
  • Meteor.status
  •   
  • Meteor.user
  •   
  • Meteor.userId
  •   
  • Meteor.loggingIn
  •