无需辅助函数即可将数据导入模板

时间:2014-01-11 16:41:06

标签: meteor

有什么区别:

  Session.set("sessionclickcount",1);
  Template.hello.clickcount = Session.get("sessionclickcount");

  Session.set("sessionclickcount",1);
  Template.hello.clickcount = function()
  {
    return Session.get("sessionclickcount");
  };

我稍后通过使用以下代码更新会话变量来尝试更新模板数据:

  Template.hello.events({
    'click input' : function () {
      Session.set("sessionclickcount",
        Session.get("sessionclickcount")+1);
    }
  });

第一种方法失败,html不会改变。第二个成功。为什么?谢谢!

2 个答案:

答案 0 :(得分:2)

流星中的助手可以是函数或常数值。

来自docs

  

Helpers也可用于传递常量数据。

     

//与{{#ections sections}}一起使用   Template.report.sections = [“情境”,“并发症”,“决议”];

在您的情况下,您将帮助器设置为常量值1,因为它是执行此行javascript时会话字段的值:

Template.hello.clickcount = Session.get("sessionclickcount");

答案 1 :(得分:1)

流星中的助手需要返回功能。这是因为该函数在上下文中运行,并允许meteor跟踪依赖性。

这些依赖关系然后帮助流星知道模板需要用新数据重绘。

如果使用Template.hello.clickcount = Session.get("sessionclickcount");,渲染引擎(spark)不会从中获得任何依赖关系,这就是它不会改变的原因。它不知道它必须重绘它。