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