模板更新的流星反应功能

时间:2015-04-18 20:52:29

标签: javascript meteor

我想在Meteor.js中解决以下问题:

我有一个HTML元素,只有在用户登录时才会出现在模板中: {{#if currentUser}} <input ...> {{/if}}。 HTML元素出现后,我需要在它上面执行JS命令。因此,我需要在更新模板后发生某种回调。怎么做到这一点?

在这种情况下,我所知道的所有被动数据源都没有这样做,例如{<1}}源在更新模板之前触发依赖。另请参阅我之前的问题here

2 个答案:

答案 0 :(得分:3)

重构您的模板代码,将{{#if}}块帮助器的内容放在子模板中,只有在满足条件且新的时候才会触发它自己的onRendered生命周期事件隐含的HTML内容将插入DOM中。

HTML

<template name="parentTemplate>
  {{#if currentUser}}
    {{> childTemplate}}
  {{/if}}
</template>

<template name="childTemplate">
  {{! whatever}}
</template>

JS

Template.childTemplate.onRendered(function(){
  // here you go
});

答案 1 :(得分:0)

我会将所需的代码添加到autorun

Template.mytemplate.onRendered(function() {
   Tracker.autorun(function() {
     user = Meteor.user()
     if (user) {
        // Your code here
     }
   }
}