Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Meteor 流星模板中的反应行为_Meteor_Handlebars.js - Fatal编程技术网

Meteor 流星模板中的反应行为

Meteor 流星模板中的反应行为,meteor,handlebars.js,Meteor,Handlebars.js,有人能澄清Meteor(把手)模板是如何与反应源相互作用的吗?这本书中已经有很多内容,但更系统的解释会有所帮助 例如,当会话变量发生更改时,以下内容似乎不会触发模板重新绘制 Template.foo.rendered = function () { var selectedItem = Session.get('item_selected'); ... do stuff ... } 我不明白为什么Template.rendered事件对被动源更改没有反应。我还想了解其他事件/方

有人能澄清Meteor(把手)模板是如何与反应源相互作用的吗?这本书中已经有很多内容,但更系统的解释会有所帮助

例如,当
会话
变量发生更改时,以下内容似乎不会触发模板重新绘制

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

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

当您使用

Session.set("item_selected","value");
这个
会话
散列,在名称旁边有一个类似于的被动依赖项。当您更改此会话哈希时,当前的反应上下文将无效,所有内容都将重新绘制/重新呈现(通过Session.set调用)

然后将运行
.rendered
方法,您可以像使用
var selectedItem

有关其具体工作原理的详细视频广播,您可以查看EventedMind上的视频,其中演示了如何构建
会话以及如何使另一个变量反应


  • Akshat,我的问题是,为什么您描述的行为不适用于
    Template.rendered()
    事件-如果有其他事件/方法遵循相同的模式,那么它确实适用于所有地方,当被动上下文无效时,将在每个模板呈现上调用Template.rendered:被动变量会像会话一样更改。我不太清楚您的意思,其他方法/事件会发生更改,因为不需要重新运行很多方法,因为只有模板数据/面向用户的功能需要更改。此外,还可以使用Deps.autorun(function(){..})添加自定义事件,该函数在反应上下文无效时也会运行。
    Template.rendered
    确实是在每次呈现模板时调用的。但它似乎不像其他方法那样注册它所包含的反应源。换句话说:在上面的示例中,如果会话变量发生更改(并且假设它不是链接到模板的任何其他方法的一部分),则不会触发模板呈现。我想我明白你的意思了,但这不是template.rendered()的用例,仅当其各自的模板在更改后重新呈现时才会触发。Deps.autorun可能更符合您的要求,因为当依赖项发生变化时,您可以直接执行所有javascript操作: