Meteor模板中的反应行为

时间:2013-04-21 11:04:01

标签: meteor handlebars.js

有人可以澄清Meteor(Handlebars)模板如何与反应源相互作用? documentation已有很多内容,但更系统的解释会有所帮助。

例如,当Session变量发生变化时,以下内容似乎不会触发模板重绘

Template.foo.rendered = function () {
    var selectedItem = Session.get('item_selected');
    ... do stuff ...
}

我不明白为什么Template.rendered事件不会对响应源更改做出反应。我还想了解其他事件/方法是否表现出这种特殊行为。

1 个答案:

答案 0 :(得分:2)

使用

设置item_selected值时,模板将重新渲染
Session.set("item_selected","value");

此名称旁边的Session哈希值具有与Deps.depends类似的被动依赖关系。当您更改此Session哈希时,当前的反应上下文将被无效,并且将重绘/重新呈现所有内容(通过Session.set调用)。

然后将运行.rendered方法,您可以像使用var selectedItem一样使用此新值

有关其工作原理的非常详细的视频,您可以查看EventedMind上的视频,其中演示了如何构建Session以及如何使另一个变量反应。

  1. http://www.eventedmind.com/posts/meteor-the-reactive-session-object
  2. http://www.eventedmind.com/posts/meteor-introducing-deps